2016-01-21 44 views
0

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

例如ASPNETUsers表有一个“非活动”列,但这太永久了。我正在寻找“ThisGuyIsLoggedIn”专栏。

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

forcefully log out a specific user among all online users

+1

一种可能的方法是让SQL服务器用用户ID调用您的MVC应用程序,然后您的MVC应用程序缓存要刷新的用户列表。这有可能吗? –

+0

那么维护是用存储过程完成的。我不知道一个SQL存储过程可以调用MVC中的任何东西。但如果是这样的话,那是可能的。 – Rafiki

+1

根据您是否启用了CLR集成等,有多种方式可以从SQL proc发出Web请求。这里是一个:http://stackoverflow.com/questions/9422914/calling-an-mvc3-action- from-a-sql-clr-stored-procedure这里是另一个:http://stackoverflow.com/questions/22067593/calling-an-api-from-sql-server-stored-procedure –

回答

1

一些我认识的列打后,您可以更改SecurityStamp列将无效用户,并造成任何身份验证失败。只是不要将其更改为NULL。

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

围绕这个答案的更多上下文,这似乎是我要走的路,可以在这里找到:http://stackoverflow.com/questions/19487322/what-is-asp-net-identitys-iusersecuritystampstoretuser-interface –