У меня странная проблема, которая может помочь вам решить ее с помощью Spring Security.
У меня есть класс конфигурации, подобный этому:
@EnableWebSecurity
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.apply(login())
.and()
.logout()
.logoutSuccessUrl("https://www.google.com")
.and()
.authorizeRequests()
.antMatchers("/api/**")
.hasRole("API_USER");
}
}
Прикладная программа применяет пользовательский конфигуратор безопасности, который добавляет обработчик выхода из системы и обработку исключений для доступа, в котором запрещен доступ, и позволяет проходить статические ресурсы, такие как favicon.
Когда я отлаживаю, я вижу, что LogoutFilter
создается, но я не вижу, чтобы мой logoutSuccessUrl
был задан как целевой URL для simpleUrlLogoutSuccessHandler
. Я также проверяю, что я делаю POST
до /logout
с токеном CSRF. Я знаю порядок вещей, поэтому мне было интересно, если кто-нибудь может указать на явный недостаток.
Метод авторизации в основном такой:
@Override
public void init(HttpSecurity http) throws Exception {
http
.exceptionHandling()
.accessDeniedHandler(myCustomAccessDeniedHandler)
.and()
.logout()
.addLogoutHandler(myLogoutHandler)
.and()
.authorizeRequests()
.antMatchers("**/favicon.*", "/public/**")
.permitAll();
}