Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 刷新当前用户';在ASP.NET identity framework中更改时的角色?_Asp.net Mvc_Asp.net Identity_Roleprovider - Fatal编程技术网

Asp.net mvc 刷新当前用户';在ASP.NET identity framework中更改时的角色?

Asp.net mvc 刷新当前用户';在ASP.NET identity framework中更改时的角色?,asp.net-mvc,asp.net-identity,roleprovider,Asp.net Mvc,Asp.net Identity,Roleprovider,使用VS 2013、标准MVC模板和身份提供商框架 用户已登录,我有: //.... UserManager.AddToRole(User.Identity.GetUserId(), "Members"); # Line X RedirectToAction("Index", "Members"); 控制员成员如下: [Authorize(Roles="Members")] public class MembersController : Controller { // G

使用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(“成员”)
返回false

如果用户注销然后再次登录,则将通过访问成员控制器,即
user.IsInRole(“成员”)
现在返回true

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

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

当用户登录时,身份信息(角色、声明)被放入cookie中。由于用户已经登录,这行代码
UserManager.AddToRole(user.Identity.GetUserId(),“Members”)
将更新数据库,但不会更新cookie。你必须重新发布cookie


尝试添加
SignInManager.SignIn(user,false,false)(如果您没有用户,
var user=UserManager.FindById(user.Identity.GetUserId())
)在
重定向到操作(“索引”、“成员”)之前

这实际上是应该为Role.AddUserToRole()方法解释的内容。或者文档中的“注意!”框。1问题:大多数角色是由其他人分配的,有没有一种简单的方法可以使用Identity向用户发送一种通知以刷新其cookie?如果我们需要在我们的站点中实现基于角色的订阅(即,用户购买订阅,我们需要在不登录的情况下显示额外的预告)这将使用完整的@CularBytes。