我的应用程序具有用户权限控制,因为并非所有用户都可以访问完整网站。目前,特定用户的所有这些权限都存储在其会话中,因为在每个Post Back时搜索数据库会成为问题。
问题是当我删除一个权限时,用户仍然可以访问页面,只有在关闭浏览器后,更新才会生效。
是否有一种方法可以通过ID终止特定的应用程序会话,强制用户重新登录?
我的应用程序具有用户权限控制,因为并非所有用户都可以访问完整网站。目前,特定用户的所有这些权限都存储在其会话中,因为在每个Post Back时搜索数据库会成为问题。
问题是当我删除一个权限时,用户仍然可以访问页面,只有在关闭浏览器后,更新才会生效。
是否有一种方法可以通过ID终止特定的应用程序会话,强制用户重新登录?
"Is there a way to Kill an specific Application Session by the ID, forcing user to Log in again?"
不可以访问其他用户的Session对象,只能访问当前请求用户(即自己)的Session对象。
因此,您需要将用户的ID存储在其他地方,例如静态集合中。当用户进行下一个请求时,可以检查该ID是否在集合中,并更新权限或注销用户。
另一种选择是将所有当前已登录用户的权限对象保存在静态集合以及其会话变量中。这样,您就可以更改权限对象而不访问该用户的Session对象。
在Web应用程序中使用静态变量当然需要采取通常的预防措施。由于多个线程可以访问它,因此访问必须同步。此外,如Alexei Levenkov所指出的那样,如果您有多个服务器,则必须在服务器之间保持数据同步。
您可以编写Session.Abandon();
或Session.Clear();
或者Session.SessionID[int index];
将特定用户会话值存储在此中,然后使用Session.Abandon();
和Session.Clear();
要终止特定会话,请尝试使用Session.Remove("key");
Session
,请使用Session.Remove()
,如下所示:Session.Remove("YourKey");