【发布时间】:2013-12-28 00:22:58
【问题描述】:
我发现如果我将用户添加到 ASP 身份中的角色,它在我注销并重新登录之前不会生效。我需要做些什么来刷新用户的角色而不强制用户先注销?
以下是我将用户添加到角色的方式。
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));
var userId = HttpContext.Current.User.Identity.GetUserId();
userManager.AddToRole(userId, roleName);
然后,几乎立即,我将用户重定向到此操作方法。我可以在数据库中知道我已被添加到正确的角色,但 MVC 仍将我重定向到登录页面。但是,如果我注销、重新登录并尝试使用此操作方法,它就可以正常工作。
[Authorize(Roles = RecoveryStandardRoles.ServiceProvider)]
public partial class CertifyController : Controller
{
#region Public Methods and Operators
public virtual ActionResult CompanyProfile()
{
return this.View();
}
#endregion
}
感谢您花时间查看我的问题!
【问题讨论】:
-
如果您要检查是否有人在您的代码中担任某个角色,
User.IsInRole(roleName)需要注销并登录以反映被添加到新角色。UserManager.IsInRole(userID, roleName)没有。
标签: asp.net-mvc-5 asp.net-identity