【发布时间】:2015-03-26 17:47:31
【问题描述】:
使用 VS 2013、标准 MVC 模板和身份提供者框架
用户已登录,我已:
//....
UserManager.AddToRole(User.Identity.GetUserId(), "Members"); # Line X
RedirectToAction("Index", "Members");
Members 控制器如下:
[Authorize(Roles="Members")]
public class MembersController : Controller
{
// GET: Members
public ActionResult Index()
{
return View();
}
}
执行 X 行后,我可以确认用户已添加到表 dbo.AspNetUserRoles 中。但是,用户在到达成员控制器时无法通过角色检查。 User.IsInRole("Members") 返回 false。
如果用户注销然后再次登录,则对成员控制器的访问将通过,即User.IsInRole("Members") 现在返回 true。
有缓存吗?为什么延迟?我该如何克服它?
我还尝试将第 X 行的方法转换为异步方法并使用UserManager.AddToRoleAsync。同样的延迟效果仍然存在。
【问题讨论】:
标签: asp.net-mvc asp.net-identity roleprovider