使用VS 2013、标准MVC模板和身份验证提供程序框架
用户已登录,我有:
//....
UserManager.AddToRole(User.Identity.GetUserId(), "Members"); # Line X
RedirectToAction("Index", "Members");
成员控制器如下:
[Authorize(Roles="Members")]
public class MembersController : Controller
{
// GET: Members
public ActionResult Index()
{
return View();
}
}
执行X行代码后,我可以确认用户已添加到表dbo.AspNetUserRoles
中。但是,在到达Members控制器时,用户未通过角色检查。User.IsInRole("Members")
返回false。如果用户注销并重新登录,则可以访问Members控制器,即
User.IsInRole("Members")
现在返回true。是否存在某种缓存?为什么会有延迟?如何解决它?
我还尝试将X行的方法转换为异步方法,并使用
UserManager.AddToRoleAsync
。仍然存在相同的延迟效应。