无状态spring应用程序 - JSESSIONID仍然生成

问题描述 投票:0回答:1

我正在尝试使java Web应用程序真正无状态(尽管仍然使用基本身份验证)但是现在JSESSIONID cookie总是由我们的servlet容器(Tomcat)生成。

我的堆栈:

Java: 1.8
Spring: 4.1.6.RELEASE
Spring Security: 4.0.2.RELEASE
Tomcat: 7.0.93

我们使用XML配置,所以这是我的安全配置文件,我使用STATELESS选项创建会话:

<beans:bean id="requestCache" class="org.springframework.security.web.savedrequest.NullRequestCache" />

<http use-expressions="true" create-session="stateless" pattern="/api/**">
        <request-cache ref="requestCache"/>
        <csrf disabled="true"/>

        <!-- REST ENDPOINTS PATH BASED -->
        <intercept-url pattern="...."/>
        <intercept-url pattern="...."/>
</http>

正如本response中所记录的,这应该足以确保Spring Security不会创建会话,但我的应用程序的其他部分仍然可以创建一个。

问题是:如何跟踪谁在请求创建会话?

基本上我正在尝试做的是调整有状态java应用程序使用的后端,由其他客户端应用程序以无状态方式使用,这些应用程序只会调用特定路径(/api/**),如我的安全配置文件中所详述。

这个有状态的部分使用一些会话作用域的bean;我需要以请求范围的方式使用那些相同的bean,因此我需要确保永远不会创建JSESSIONID cookie。

试图在Tomcat(或浏览器)中禁用cookie altogheter实现这一点,所以我正在尝试一种方法直接使用Spring。

java spring cookies spring-security
1个回答
1
投票

如果你想确保没有创建会话,请创建一个过滤器,然后用一个类来包装HttpServletRequest块/失败/忽略getSession(...)调用。

© www.soinside.com 2019 - 2024. All rights reserved.