在 ASP.NET 身份框架中更改时刷新当前用户的角色?

2024-04-22

使用 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。但是,用户在到达成员控制器时未通过角色检查。User.IsInRole("Members")返回假。

如果用户注销然后再次登录,则将访问Members控制器,即User.IsInRole("Members")现在返回 true。

有缓存吗?为什么延迟?我该如何克服它?

我还尝试将 X 行的方法转换为异步方法并使用UserManager.AddToRoleAsync。同样的延迟效应仍然存在。


用户登录时将身份信息(角色、声明)放入cookie中。由于用户已经登录,因此这行代码UserManager.AddToRole(User.Identity.GetUserId(), "Members")将更新 db ,但不会更新 cookie。您必须重新发出 cookie。

Try add SignInManager.SignIn(user, false, false);(如果您没有用户,var user = UserManager.FindById(User.Identity.GetUserId())) 前RedirectToAction("Index", "Members");

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET 身份框架中更改时刷新当前用户的角色? 的相关文章

随机推荐