Внедрите функциональность "logout" в Spring Boot
Чтобы получить базовую функцию безопасности, я добавил следующий стартовый пакет в свой pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
И добавил следующие свойства в application.properties:
security.user.name = гость
security.user.password = тигр
Теперь, когда я попал на свою домашнюю страницу, я получаю окно входа и логин, как и ожидалось.
Теперь я хочу реализовать функцию выхода. В принципе, когда пользователь нажимает на ссылку, она выходит из системы. Я заметил, что логин не добавляет cookie в мой браузер. Я предполагаю, что Spring Security создает для пользователя объект HttpSession. Это правда? Нужно ли мне "аннулировать этот сеанс и перенаправить пользователя на какую-либо другую страницу? Каков наилучший способ реализовать функцию выхода из системы в приложении на основе Sprint Boot?
Ответы
Ответ 1
Позднее лучше, чем никогда. Spring Загрузка по умолчанию содержит множество компонентов безопасности, включая защиту CSRF. Одна из вещей, которые делает это, - принудительный выход POST, см. Здесь: http://docs.spring.io/spring-security/site/docs/3.2.4.RELEASE/reference/htmlsingle/#csrf-logout
Как это можно предположить, вы можете переопределить это, используя что-то по строкам:
http.authorizeRequests()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().fullyAuthenticated()
.and()
.formLogin().loginPage("/login").failureUrl("/login?error").permitAll()
.and()
.logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).logoutSuccessUrl("/login");
Последняя строка важна.