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

时间:2015-07-09 07:59:22

标签: c# asp.net asp.net-mvc asp.net-identity asp.net-identity-2

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

a)用户付款,因此将其从TrialUsers中删除并添加到用户(或任何类似的订阅更改,例如从标准更改为高级。

b)对于网站管理员,有一个明确的用户界面可以编辑角色成员资格。

修改

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

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

结束编辑

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

UserManager.AddToRolesAsync(...);

UserManager.RemoveFromRolesAsync(...);

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

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

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

1 个答案:

答案 0 :(得分:1)

再次登录用户以重建用户cookie:

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    //return the array showing number of collectionViewCells in tableViewCell. Of course you will have to handle the data showed in each tableView cell, (maybe using collectionView tags or some other logic)
}

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

}
相关问题