我们目前正在构建一个MVC4 web应用程序,它需要实现每个用户的“独占”登录软件。这意味着,每个用户只允许有一个活动会话。如果在该会话期间,同一用户的另一个成功登录来自另一个浏览器或主机,则需要终止旧会话。
为此,我在用户登录时保存会话ID。当发生另一个登录时,我确实有这个用户的所有现有会话ID的列表(应该只有一个)。因此,我确实有一个会话ID作为字符串,我希望web应用程序可以使它失效/杀死/删除--但是如何以及在哪里可以这样做呢?所以我需要杀死一个会话本身,而不是其中的一个会话变量。
我试图在System.Web.HttpContext.Current.Session中找到一些东西,但据我所见,我只能访问当前会话(在当前用户和请求的上下文中),但是如何访问这个web应用程序的所有其他已建立的会话?
谢谢你的帮忙!
发布于 2014-03-21 09:59:06
您必须在服务器端控制会话。在服务器端,您可以访问分配给每个新会话的会话id。
因此,当用户登录时,您将分配的会话id存储在user表中。他拿到了这个疗程证明。在每个请求中,检查会话id是否等于存储在数据库中的会话id。
当用户发出另一个登录时,服务器将分配另一个会话id,对吗?您可以将这个新的会话id存储在用户的表上。
之后,来自旧会话的请求将被拒绝/重定向,因为会话id不再有效。旧的会话id被最后一个登录替换。
https://stackoverflow.com/questions/22555372
复制相似问题