Spring的WebSecurity'忽略'仍在创建会话

时间:2017-01-25 18:41:21

标签: spring session spring-security

我想避免在用户请求静态资源(如css文件)时创建会话。 Howerver,即使在告诉WebSecurity忽略这个静态资源路径之后,我注意到我的SpringBoot应用程序的所有响应仍然具有JSESSIONID cookie。为什么呢?

{{1}}

我使用Spring Security保护我的应用程序....但是对于这些静态资源的请求,我不想创建或验证会话。

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。这都怪我。我正在使用Spring Security和扩展的RequestHeaderAuthenticationFilter。虽然web.ignoring()...确实避免了所有Spring Security身份验证/授权检查,但它仍然会运行自定义筛选器。

在我的一个过滤器中,我有以下几行:

HttpServletRequest req = ((HttpServletRequest) request);
HttpSession session = req.getSession();

我用它来检查一个会话是否已经存在以及我是否需要刷新它(这里太复杂了解释)。但是methodreq.getSession()将创建一个新会话(如果它尚不存在)。我没有意识到它有副作用。

相反,我应该致电:req.getSession(false)。如果会话已存在,则返回会话,如果不存在,则返回null。