Bạn cần đặt thuộc tính hideUserNotFoundExceptions là AbstractUserDetailsAuthenticationProvider thành sai. (Điều này có nghĩa là giải pháp này phụ thuộc vào mã bảo mật mùa xuân có thể thay đổi trong tương lai).
Sau đây là các bước sau:
(1) Xác định một bean DaoAuthenticationProvider (nếu bạn đã có một tài sản sau đó thiết lập hideUserNotFoundExceptions của nó là false). Dưới đây là Java cấu hình phong cách:
@Bean
public AuthenticationProvider daoAuthenticationProvider() {
DaoAuthenticationProvider impl = new DaoAuthenticationProvider();
impl.setUserDetailsService(yourUserDetailsService());
impl.setHideUserNotFoundExceptions(false) ;
return impl ;
}
(2) Cấu hình quản lý xác thực với nhà cung cấp trên:
<authentication-manager alias="authenticationManager">
<authentication-provider ref="daoAuthenticationProvider"/>
<!-- other providers if any -->
</authentication-manager>
(3) Tạo một ngoại lệ mở rộng UsernameNotFoundException:
public class DisabledException extends UsernameNotFoundException {
public DisabledException(String msg) {
super(msg);
}
/* other constructors */
}
(4) Trong UserDetailsService của bạn, hãy ném ngoại lệ trên bằng bất kỳ phím thông báo nào bạn muốn:
throw new DisabledException(messages.getMessage(
"AbstractUserDetailsAuthenticationProvider.disabled", "User is disabled"));
đây thông điệp là SpringSecurityMessageSource.getAccessor()
Bạn đã thử phương pháp được mô tả trong http://stackoverflow.com/questions/1373407/how-to-display-custom-error-message-in-jsp-for-spring-security-auth- ngoại lệ ? – Jk1
Nó hoạt động, một phần. Tuy nhiên, tôi có thể nhận được các thông báo tùy chỉnh, nó luôn trả về thông điệp được cấu hình cho AbstractUserDetailsAuthenticationProvider.badCredentials. Mặc dù tôi ném DisabledException, tôi nhận được cùng một thông báo như được định nghĩa cho badCredentials trong trang jsp của tôi – Jayz
Vui lòng giải thích phiên bản bạn đang sử dụng, nơi bạn đang ném ngoại lệ và nơi bạn đang hiển thị thông báo. Nó có lẽ là tốt nhất nếu bạn đăng cấu hình bảo mật web thực tế mà bạn đang sử dụng. –