我们有一个Spring安全应用程序,它具有非常标准的设置。目前我们只允许每个主体使用1个会话,在第一个会话注销或过期之前拒绝相同主体的其他登录(maximumSessions = 1,excpeptionIfMaximumExceeded = true)。
我想更改此设置,以便当主体第二次登录并在另一个会话上进行当前活动登录时,第一个会话将被无效/替换。使用提供的spring安全性并发会话控制策略很容易实现,但我无法确定如何提醒用户。更换用户的会话时,注销处理程序会使会话失效。下一个请求将获得重定向到登录页面,并在查询字符串上显示错误代码。但是,如果获得此重定向的请求是图像或其他非编程调用,我无法处理此问题。
似乎我需要将用户置于中间状态,在那里他们有一个会话但它已经过期,如果他们不想更换他们的原始会话,他们需要重新登录。但是我没有看到这样做的好方法。
在某个地方是否有这样的设置示例?
答案 0 :(得分:1)
您是否考虑过在javascript中设计一个轮询机制,以便在会话即将失效时提醒用户?通过这种方式,他们将知道他们的会话无效,并且可能有机会刷新它以防部分填写表单或文本区域。
这也可以从登录方面起作用。您可以在登录后添加一个步骤,如果他们有另一个会话处于活动状态并让他们验证他们想要使其无效。
似乎在步骤之间不是必需的,因为通常认证应该是布尔值。要么他们被认证,要么他们不是。中间区域可能更难以处理所有情况。