我正在一个ASP MVC 5应用程序中使用ASP.NET身份验证框架。在某些情况下,当前用户的角色成员身份会发生变化,例如:
a)用户进行了付款,因此从试用用户中删除并添加到用户(或任何类似的订阅更改,比如从标准版升级到高级版)。
b)对于站点管理员,有一个明确的UI,他们可以编辑角色成员身份。
编辑
同时,我发现了一个不仅是不便而且是安全漏洞的用例,并使授权无法使用。
c)不识别角色成员身份更改适用于身份验证框架的“记住我”功能。这意味着如果用户使用了记住我功能(请不要建议我不为我的用户提供此功能),则永远不会应用角色成员身份更改。(记忆的过期时间)这意味着我无法有效地撤销任何成员身份。这意味着我无法使用授权子系统(例如我的控制器或操作方法上的属性),我们回到了石器时代:if(...)
所有更改都是通过使用提供的标准API完成的。
似乎授权子系统和/或身份子系统在用户下次登录前无法识别更改。 尤其是在方案a)中,要求付费用户注销并重新登录非常不方便。我发现ASP MVC授权系统在未注销-重新登录的情况下无法检测到角色更改。
请注意,我知道一些授权系统(例如Windows)是以这种方式工作的。 仍然希望在Identity框架中有解决方案可以跳过强制用户注销-重新登录的步骤。
是否有任何解决方法或者我漏掉了什么?
a)用户进行了付款,因此从试用用户中删除并添加到用户(或任何类似的订阅更改,比如从标准版升级到高级版)。
b)对于站点管理员,有一个明确的UI,他们可以编辑角色成员身份。
编辑
同时,我发现了一个不仅是不便而且是安全漏洞的用例,并使授权无法使用。
c)不识别角色成员身份更改适用于身份验证框架的“记住我”功能。这意味着如果用户使用了记住我功能(请不要建议我不为我的用户提供此功能),则永远不会应用角色成员身份更改。(记忆的过期时间)这意味着我无法有效地撤销任何成员身份。这意味着我无法使用授权子系统(例如我的控制器或操作方法上的属性),我们回到了石器时代:if(...)
所有更改都是通过使用提供的标准API完成的。
UserManager.AddToRolesAsync(...);
并且
UserManager.RemoveFromRolesAsync(...);
似乎授权子系统和/或身份子系统在用户下次登录前无法识别更改。 尤其是在方案a)中,要求付费用户注销并重新登录非常不方便。我发现ASP MVC授权系统在未注销-重新登录的情况下无法检测到角色更改。
请注意,我知道一些授权系统(例如Windows)是以这种方式工作的。 仍然希望在Identity框架中有解决方案可以跳过强制用户注销-重新登录的步骤。
是否有任何解决方法或者我漏掉了什么?