我发现如果我将用户添加到ASP身份中的某个角色,直到我注销并重新登录后才会生效。是否需要执行某些操作来刷新用户的角色而不强制用户先注销?MVC 5 AddToRole在它工作之前需要注销?
以下是我将用户添加到角色的方式。
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(角色名)'需要注销和登录,以反映被添加到新的角色。 'UserManager.IsInRole(userID,roleName)'不。 – nmit026