【发布时间】:2012-01-24 16:24:51
【问题描述】:
我花了很多时间来解决这个问题,但仍然无法解决。
我正在使用 Spring Security。该应用程序将在多个服务器上运行。我在登录时使用“记住我”选项将持久登录信息保存在我的数据库中。
如果用户连接到服务器 1,他在 cookie 浏览器中有一个会话 ID。我打开另一台服务器,此用户进行身份验证,cookie 浏览器具有此会话 ID 和服务器 1 连接的会话 ID。
当该用户在一台服务器或另一台服务器上注销时,他应该被重定向到所有服务器的登录页面。
我试图从浏览器中删除 cookie,但没有成功。我怎样才能使这项工作?有什么帮助吗?
示例场景:在 gmail 中,如果您的帐户中打开了 2 个标签,并且如果您从其中一个中注销,则其他标签也会自动注销。服务器 1 不知道服务器 2 的信息。我想我的问题就在这里,但我不知道如何解决这个问题。
这是我的安全配置:
<http auto-config="false" use-expressions="true" disable-url-rewriting="true">
<intercept-url pattern="/login.do" access="permitAll" />
<intercept-url pattern="/**" access="hasRole('ROLE_USER')" />
<remember-me data-source-ref="dataSource" />
<form-login login-page="/login.do" />
<custom-filter position="CONCURRENT_SESSION_FILTER" ref="concurrencyFilter" />
<custom-filter position="LOGOUT_FILTER" ref="logoutFilter" />
<session-management session-authentication-strategy-ref="sas" />
</http>
<!-- <logout logout-url="/j_spring_security_logout" logout-success-url="/" invalidate-session="true" /> -->
<beans:bean id="logoutFilter" class="org.springframework.security.web.authentication.logout.LogoutFilter">
<beans:constructor-arg value="/login.do" />
<beans:constructor-arg>
<beans:list>
<beans:ref bean="rememberMeServices"/>
<beans:ref bean="logoutHandler"/>
</beans:list>
</beans:constructor-arg>
<!-- <beans:property name="filterProcessesUrl" value="/login.do" /> -->
</beans:bean>
<beans:bean id="sessionRegistry" class="org.springframework.security.core.session.SessionRegistryImpl" />
<beans:bean id="concurrencyFilter" class="org.springframework.security.web.session.ConcurrentSessionFilter">
<beans:property name="sessionRegistry" ref="sessionRegistry" />
<beans:property name="expiredUrl" value="/login.do" />
</beans:bean>
<beans:bean id="sas" class="org.springframework.security.web.authentication.session.ConcurrentSessionControlStrategy">
<beans:constructor-arg name="sessionRegistry" ref="sessionRegistry" />
<beans:property name="maximumSessions" value="1" />
</beans:bean>
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="jdbcUserService" />
</authentication-manager>
【问题讨论】:
标签: spring authentication cookies spring-security sessionid