【发布时间】:2015-09-21 06:30:07
【问题描述】:
我正在使用 Asp.NET Identity 2.1.0 并存储 Accounts 的列表,User 可以访问,作为声明。 ClaimsIdentity 在User 登录时生成:
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add Claims concerning Account
userIdentity.AddClaim(new Claim("AccountList", SerializedListOfAccounts));
return userIdentity;
}
假设管理员撤销了User A 对特定帐户的访问权限。如何强制User A 重新生成其ClaimsIdentity?请记住,它不在User A 的上下文中。而且我不想等到 cookie 过期(并且会自动生成一个新的ClaimsIdentity。
有可能吗?难道没有办法告诉服务器将User A的cookie视为无效并强制重新生成吗?
我想要这种行为的原因是创建一个自定义 AuthorizeAttribute,我可以将它放在我的控制器上,检查 Claims 以查看 User 是否具有访问权限,以避免额外往返数据库。
【问题讨论】:
-
您必须将它们注销,对吗?也许这会有所帮助:stackoverflow.com/questions/10369225/…
-
@BrendanGreen 我真的不想注销他们,只是强迫他们重新生成他们的声明。我可以使用 UpdateSecurityStamp 强制他们再次登录,但无论如何,这将是令牌过期的时间。
-
您可以将其注销,然后使用更新的声明重新登录。
标签: asp.net asp.net-mvc-5 asp.net-identity asp.net-identity-2