如何刷新当前经过身份验证的用户的角色更改了ASP.NET身份框架中的成员身份?

g.p*_*dou 5 c# asp.net asp.net-mvc asp.net-identity asp.net-identity-2

我在ASP MVC 5应用程序中使用ASP.NET标识框架.在某些情况下,当前用户的角色成员身份正在发生变化,例如:

a)用户付款,因此将其从TrialUsers中删除并添加到用户(或任何类似的订阅更改,例如从Standard变为Premium.

b)对于站点管理员,有一个明确的UI,他们可以编辑角色成员资格.

编辑

与此同时,我发现了一个用例不仅是一个不方便而是一个安全漏洞,并使授权无法使用.

c)无法识别角色成员身份更改适用于Identity框架的"记住我"功能.这意味着如果用户使用了记住我的功能(请不要建议我不要为我的用户提供此功能),那么角色成员身份更改将不会应用.(记忆的到期)这意味着我无法有效撤销任何会员资格.这意味着我不能使用授权子系统(比如我的控制器或动作方法上的属性),我们又回到了石器时代:if(...)

结束编辑

所有更改都通过使用提供的标准API完成:

UserManager.AddToRolesAsync(...);
Run Code Online (Sandbox Code Playgroud)

UserManager.RemoveFromRolesAsync(...);
Run Code Online (Sandbox Code Playgroud)

在用户下次登录之前,授权子系统和/或身份子系统似乎无法识别更改.特别是在方案a)中,要求付费用户注销并登录是非常不方便的.我看到ASP MVC授权系统在没有签出 - >登录的情况下检测不到角色更改.

请注意我知道某些授权系统(如Windows)以这种方式工作.仍然希望Identity框架中有一个解决方案可以跳过强制用户注销 - >登录.

有没有解决方法,或者错过了什么?

Leo*_*lva 2

只需再次登录用户即可重建用户 cookie:

SignInManager.SignIn(user, false, false);
Run Code Online (Sandbox Code Playgroud)