c# - ASP.NET 按 ID 终止 session

标签 c# asp.net session sessionid

我的应用程序可以控制用户权限,因为并非所有用户都可以访问完整的网站。此时,特定用户的所有这些权限都存储在他的 session 中,因为每次回发都在数据库中搜索对我来说是个问题。

问题是当我取消权限后,用户仍然可以访问该页面,只有当他关闭浏览器时,更新才会生效。

有没有办法通过 ID 终止特定的应用程序 session ,迫使用户再次登录?

最佳答案

"Is there a way to Kill an specific Application Session by the ID, forcing user to Log in again?"

没有。您只能访问执行当前请求的用户(即您自己)的 Session 对象,而不能访问其他用户的 Session 对象。

因此,您需要将用户的 ID 存储在其他地方,例如静态集合中。当用户发出下一个请求时,您可以检查该 id 是否在集合中,并更新权限或注销用户。

另一种选择是将所有当前登录用户的权限对象保存在一个静态集合及其 session 变量中。这样您就可以在不访问该用户的 Session 对象的情况下更改权限对象。

当然,在 Web 应用程序中使用静态变量需要采取通常的预防措施。由于多个线程可以访问它,因此必须同步访问。此外,正如 Alexei Levenkov 指出的那样,如果您有多个服务器,则必须在服务器之间保持数据同步。

关于c# - ASP.NET 按 ID 终止 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18450892/

相关文章:

c# - 极稀疏数组的实现

c# - 警告 : Only got partial types from assembly: Microsoft. Azure.WebJobs.Extensions.Storage

asp.net - 中继器 View 状态不刷新输入

php - 为 PHP REST API 实现简单的身份验证

PHP 重定向回上一页

php - 多个 PHPSESSID 冲突

c# - 如何将数组/数据表等变量传递给 SQL Server?

c# - 如何从文本框上的COM端口写入数据?,C#MVC 4, Razor

c# - .NET WCF RIA + 服务;我可以全部拥有吗?

c# - 单元测试无法识别 session