首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用basic-auth防止servlet在tomcat中的会话?

如何使用basic-auth防止servlet在tomcat中的会话?
EN

Stack Overflow用户
提问于 2017-08-22 14:29:27
回答 2查看 698关注 0票数 1

我正在使用spring-boot-starter-web创建一个部署在独立tomcat8上的war应用程序。

我有@EnableWebSecurity在每个servlet请求上强制basic-authentication,还可以保护gui。

但其主要目的是提供一个主要以编程方式访问的webservice XML。因此,客户端总是使用basic-auth发送他们的GET请求。

问题: tomcat将为每个请求创建一个新的会话!而且,当客户端以编程方式连接到xml时,会话永远不会注销。并且也不被重用,因为下一个客户端请求将再次传输基本-auth。

因此,这些会话驻留在tomcat中直到超时(例如默认的30分钟)。同时消耗记忆。

问:我如何告诉tomcat或spring,提供基本-auth http头的连接不需要创建会话?只是认证用户,发送响应,而忘记会话信息?

EN

回答 2

Stack Overflow用户

发布于 2017-08-22 18:14:44

可以将会话创建策略设置为SessionCreationPolicy.STATELESS

Security永远不会创建HttpSession,也不会使用它来获取SecurityContext

在您的WebSecurityConfiguration中设置它,例如:

代码语言:javascript
复制
http.antMatcher("/api/**")
              .sessionManagement()
              .sessionCreationPolicy(SessionCreationPolicy.STATELESS);
票数 1
EN

Stack Overflow用户

发布于 2017-08-23 10:18:40

SessionCreationPolicy.NEVER是这里正确的答案。因为默认情况下它不会创建会话。但是如果请求一个会话(例如由于我的/gui路径中的表单登录),它将被使用。

这样,任何编程请求都不会创建会话。但是,如果在the浏览器中进行测试(从而通过表单登录来提供基本安全保护),则会创建会话。这是想要的行为,因为每次从浏览器中发送请求时,没有人希望输入基本凭证。

http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45820443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档