spring会话在内部是否需要使用Spring Security ?
现在,我们有一个现有的应用程序,它使用servlet容器中的http会话(例如weblogic)。由于会话复制方面的一些问题以及将来使用另一个servlet容器的计划,我们决定寻找使http会话容器独立的现有框架。
团队决定结合官方文件中描述的hazelcast来研究spring会话。我们使用SpringSession1.3.5.0版本。
对于hazelcast配置,我们使用这个会话配置。
<context:annotation-config/>
<bean class="org.springframework.session.hazelcast.config.annotation.web.http.HazelcastHttpSessionConfiguration"/>
<bean id="hazelcastInstance" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="staticMethod" value="xxx.xxx.xxx.cache.CustomHazelcastProvider.getInstance"/>
</bean>
<bean class="org.springframework.session.web.http.SessionEventHttpSessionListenerAdapter">
<constructor-arg>
<list>
<bean class="xxx.xxx.xxx.util.CustomHttpSessionListener"/>
</list>
</constructor-arg>
</bean>
<bean class="org.springframework.session.web.http.DefaultCookieSerializer">
<property name="cookieName" value="JSESSIONID"/>
<property name="cookiePath" value="/"/>
<property name="domainNamePattern" value="^.+?\.(\w+\.[a-z]+)$"/>
</bean>
在web.xml中,我们放置了这个过滤器链。
<filter>
<filter-name>springSessionRepositoryFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSessionRepositoryFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CustomServletRequestFilter</filter-name>
<filter-class>xxx.xxx.xxx.servlet.filter.CustomServletRequestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CustomServletRequestFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
并在web.xml中添加了下面的spring配置
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:application-context.xml</param-value>
</context-param>
在相同的web.xml中,我们使用基于表单的身份验证。
<login-config>
<auth-method>FORM</auth-method>
<realm-name>myrealm</realm-name>
<form-login-config>
<form-login-page>/login.html</form-login-page>
<form-error-page>/loginerror.html</form-error-page>
</form-login-config>
</login-config>
此外,我们还使用默认的基于cookie的http策略。
在weblogic中部署上述更改后,我们能够成功登录。能够检查来自spring会话的会话id。但是,在下一跳或后续的rest调用中,它总是返回http302。它被重定向到登录页面。
spring会话需要使用Spring Security 吗?是否需要添加一些配置来解决此问题?
如有任何帮助或建议,我们将不胜感激。
谢谢您。
暂无答案!
目前还没有任何答案,快来回答吧!