gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:57:42 25 4
gpt4 key购买 nike

我正在尝试使 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 选项来创建 session :

<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 不会创建 session ,但我的应用程序的其他部分仍然可以创建 session 。

问题是:如何跟踪谁请求创建 session ?

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

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

例如,尝试在 Tomcat(或浏览器)中完全禁用 cookie 可以实现此目的,因此我正在尝试一种直接使用 Spring 来完成此操作的方法。

最佳答案

如果您想确保不创建 session ,请创建一个过滤器并使用阻止/失败/忽略 getSession(...) 的类来包装 HttpServletRequest > 来电。

关于java - 无状态 spring 应用程序 - JSESSIONID 仍然生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55871442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com