使用户会话过期(当前用户除外)

Jon*_*ood 3 c# asp.net asp.net-mvc asp.net-identity

我正在向表中添加自定义Disabled列,AspNetUsers以便管理员可以暂时禁用帐户.(看起来LockoutEndDateUtc似乎不能完全按照我的需要工作.)

但是,如果管理员在用户登录时禁用了某个帐户,该怎么办?我不是要检查当前用户帐户是否在每个请求上都被禁用,而是在寻找一种方法来使该用户的会话到期,以便下一个请求将要求他们登录.

我相信这是由一个cookie控制的.这可能吗?

Igo*_*gor 5

实际上这可以自动完成.在用户存储中的ASP.NET标识中,有一个名为的属性SecurityStamp.更改此设置后,将强制用户使用下一个请求重新进行身份验证.这是因为此字段用于生成身份验证令牌(在您的情况下为cookie).该框架具有内置于其中的方法,用于直接UpdateSecurityStampAsync或间接地更改它.间接更改的一个很好的例子是通过框架更新身份的密码(即调用UpdatePasswordRemovePasswordAsync),或者为身份启用2因素身份验证时.

更改安全标记的方法可以在UserManager和中找到并称为UpdateSecurityStampAsync.从文档:

为用户生成新的安全标记,用于SignOutEverywhere功能.

  • @JonathanWood:请参阅[如何使用ASP.NET Identity 2.0.1强制将角色更改传播给用户?](http://stackoverflow.com/a/24317054/98607)的答案,了解如何配置ASP.NET身份立即验证cookie. (2认同)