Spring SessionRegistry会话ID

时间:2014-01-09 15:39:22

标签: spring session spring-security

我正在尝试扩展Spring安全性ConcurrentSessionControlStrategy并覆盖其allowableSessionsExceeded方法。

在这个方法中,我想使用sessionInformation.getSessionId(),但是我获得了一个不同的会话ID,然后是我在登录身份验证期间保存的会话ID。在我保存的身份验证中:

String sessionId = ((WebAuthenticationDetails) authentication.getDetails()).getSessionId();

为什么会有所不同?我能做些什么来获得相同的东西?

1 个答案:

答案 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>