Tôi có một ứng dụng khởi động mùa xuân bằng cách sử dụng bảo mật mùa xuân. Cấu hình bảo mật được chia thành nhiều phiên bản WebSecurityConfigurerAdapter
.Bảo mật mùa xuân - nhiều cấu hình - thêm LogoutHandler
tôi có một nơi nào để cấu hình logout nói chung:
@Override
protected void configure(HttpSecurity http) throws Exception {
// configure logout
http
.logout()
.logoutUrl("/logout")
.invalidateHttpSession(true)
.addLogoutHandler((request, response, authentication) -> {
System.out.println("logged out 1!");
})
.permitAll();
// ... more security configuration, e.g. login, CSRF, rememberme
}
Và có một WebSecurityConfigurerAdapter
, nơi tôi muốn làm gần như không có gì, ngoại trừ thêm một LogoutHandler:
@Override
protected void configure(HttpSecurity http) throws Exception {
// configure logout
http
.logout()
.logoutUrl("/logout")
.addLogoutHandler((request, response, authentication) -> {
System.out.println("logged out 2!");
});
}
Cả configure()
phương pháp được gọi là. Tuy nhiên, nếu tôi đăng xuất, chỉ có LogoutHandler
đầu tiên được gọi. Việc thay đổi @Order
của cả hai cấu hình sẽ không thay đổi kết quả.
Điều gì bị thiếu trong cấu hình của tôi?
Bạn đang cố gắng đăng ký hai trình xử lý đăng xuất cho cùng một url hoặc bạn đang cố gắng đăng xuất cụ thể để không chạy mọi thứ khác? – Deadron
Cả hai LogoutHandlers nên chạy trên cùng một đăng xuất. –
Hãy thử liên kết đó, https://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#multiple-httpsecurity Tôi nghĩ rằng url của bạn giống nhau. –