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框架中有一个解决方案可以跳过强制用户注销 - >登录.
有没有解决方法,或者错过了什么?
只需再次登录用户即可重建用户 cookie:
SignInManager.SignIn(user, false, false);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2750 次 |
| 最近记录: |