Я использую рабочую аутентификацию JWT моего веб-приложения со следующей конфигурацией:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.exceptionHandling()
.authenticationEntryPoint(
(req, rsp, e) -> p.sendError(HttpServletResponse.SC_UNAUTHORIZED))
.and()
.addFilter(new UsernamePasswordAuthenticationFilter(authenticationManager(),
jwtConfig))
.addFilterAfter(new JwtTokenAuthenticationFilter(jwtConfig),
UsernamePasswordAuthenticationFilter.class)
.authorizeRequests()
.antMatchers(HttpMethod.POST, jwtConfig.getUri()).permitAll()
.anyRequest().authenticated();
}
Начиная с SessionCreationPolicy.STATELESS
я ожидаю, что Spring не создаст сам сеанс.Однако, если я получаю доступ к любому другому ресурсу, кроме /login
, я все равно вижу следующую запись в заголовке ответа:
set-cookie: JSESSIONID=...; Path=/; HttpOnly
Может кто-нибудь объяснить, откуда это (возможно, не из Spring) и если этовсе еще приходит из Spring, что нужно изменить?
Редактировать:
При тестировании в моем контроллере сеанс все еще вводится, как указано в приведенном выше токене.Я до сих пор понятия не имею, откуда это исходит.
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public void create(HttpSession session) {
if (session != null) {
System.out.println("Session is existing"); // executes
}
}