ASP.Net Identity Force从SQL注销

时间:2016-01-21 21:09:08

标签: sql-server asp.net-mvc asp.net-identity

我在我的MVC 5应用程序中使用ASPNET标识表。每天晚上我们都会进行"维护"在我们的数据库上如果我们修改该用户下的某些内容,我想要停用他们当前的会话,以便他们在Web应用程序中执行的下一个操作将他们踢回登录屏幕。身份验证/授权已经使用AspNet.Identity内置到我的应用程序中。我只需要一种方法通过设置一个标志来唤醒它。如果它存在。

例如,ASPNETUsers表有一个" Inactive"专栏,但这太永久了。我正在寻找" ThisGuyIsLoggedIn"列。

这接近同样的问题,但答案是从MVC中管理它,这不是一个选项。

forcefully log out a specific user among all online users

2 个答案:

答案 0 :(得分:2)

在使用我意识到的一些列后,您可以更改SecurityStamp列,这将使用户无效并导致任何身份验证失败。只是不要将其更改为NULL。

 UPDATE AspNetUsers
 SET SecurityStamp = NEWID()
 WHERE Id = @USER_ID

答案 1 :(得分:0)

我想分享此链接,并详细说明如何强制用户注销。

https://tech.trailmax.info/2015/09/prevent-multiple-logins-in-asp-net-identity/

github上的完整项目: https://github.com/shaahink/Prevent-Multiple-Login-ASPNETIdentity

如果需要重置安全标记:

 var result = await UserManager.UpdateSecurityStampAsync(user.Id);

从管理面板重置用户图章是非常好的解决方案。