2011-12-16 84 views
0

我做了一个asp.net网站,它使用Session对象来存储每个登录用户的信息。要检查用户是否仍然登录,我检查会话中是否存在某个对象。其他用户的会话无效

系统使用Jasig CAS认证,单点登录工作(如:登录后,用户的Session对象设置正确)。

CAS还支持单点登出。发生这种情况的方式是CAS在我的网站上调用一个URL,并提供一些关于CAS会话的参数。

我现在需要做的是使指定用户的所有Session对象无效。

我该如何从我网站上的页面无效随机其他用户的Session对象?有没有我可以清除的数据库,这是否全部在内存中(如果我知道要查找什么,我可以查看web.config)?

我以前见过这个问题,大多数答案是“在Session全局变量旁边保留一个全局变量,然后检查这个变量以查看用户是否应该注销”,但我不知道不喜欢那个解决方案...

干杯!

回答

0

该会话由设计专用于个人用户。因此,放弃它,必须由用户来完成。

所以你可能不得不使用另一个列表&检查。

理想情况下,您不应该将您的身份验证状态绑定到会话。用户是否被认证应该是独立的。然后,您可以选择通过查询身份验证状态来放弃会话。这也使得更容易实现的机制,如计数登录用户&确保只从一个位置登录 - 如果您需要这些。