spring会话需要使用Spring Security 吗?

xzabzqsa  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(262)

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 吗?是否需要添加一些配置来解决此问题?
如有任何帮助或建议,我们将不胜感激。
谢谢您。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题