我正在尝试扩展Spring安全性ConcurrentSessionControlStrategy并覆盖其allowableSessionsExceeded方法。
在这个方法中,我想使用sessionInformation.getSessionId(),但是我获得了一个不同的会话ID,然后是我在登录身份验证期间保存的会话ID。在我保存的身份验证中:
String sessionId = ((WebAuthenticationDetails) authentication.getDetails()).getSessionId();
为什么会有所不同?我能做些什么来获得相同的东西?
答案 0 :(得分:0)
听起来像是,您正在保存早期的sessionId(在身份验证之前生成),并且在身份验证成功后失效。
您需要在身份验证后获取新的sessionId。
更新:获取sessionId的更好方法
为此,您需要实现自定义SessionRegistry
public class MySessionRegistry implements SessionRegistry{
@Override
public SessionInformation getSessionInformation(String sessionId) {
// this is your session id to be saved
}
}
在上下文中注册为
<beans:bean id="sessionRegistry"
class="com.test.MySessionRegistry">
</beans:bean>