【发布时间】:2018-11-23 06:09:20
【问题描述】:
我有一个使用 Spring Security 4.0.1.RELEASE 的基于 J2EE REST 的应用程序。不用说,sessionCreationPolicy 和 sessionFixation 上的 Spring 文档很少,除了 StackOverflow 上的针对性问题。
我正在为 Spring Security 使用基于 Java 的配置,如下所示:
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(secureEnabled=true, prePostEnabled=true, jsr250Enabled=true, order=1)
public class DefaultSecurityBeansConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)
.sessionFixation().migrateSession()
.and()...; // additional config omitted for brevity
}
}
鉴于sessionCreationPolicy 和sessionFixation 的所有可能组合,我真的很想知道Spring 的预期行为,因为它与JSESSIONID 相关。
SessionCreationPolicy 枚举中的可能值为 ALWAYS、NEVER、IF_REQUIRED 和 STATELESS。
会话固定的可能值为newSession、migrateSession、changeSessionId 和none。
谢谢。
注意:提出这个问题的原因是当我将sessionCreationPolicy 设置为IF_REQUIRED 和@ 时,我没有在每个请求上看到一个新的JSESSIONID 987654339@ 设置为changeSessionId。 JSESSIONID 已正确创建,但此后会在请求之间进行维护。我概括了我关于所有组合的问题,希望能帮助处于类似情况但设置略有不同的其他人。
【问题讨论】:
标签: java spring jsessionid spring-session stateless