false AbstractUserDetailsAuthenticationProvider ait hideUserNotFoundExceptions özelliğini ayarlamanız gerekir. (Bu, bu çözümün gelecekte değişebilecek olan Spring Security koduna bağlı olduğu anlamına gelir). (Zaten o zaman bir tane false olarak hideUserNotFoundExceptions özelliğini ayarlarsanız)
(1) bir DaoAuthenticationProvider fasulye tanımlayın:
İşte adımlardır. Yukarıdaki sağlayıcı ile
@Bean
public AuthenticationProvider daoAuthenticationProvider() {
DaoAuthenticationProvider impl = new DaoAuthenticationProvider();
impl.setUserDetailsService(yourUserDetailsService());
impl.setHideUserNotFoundExceptions(false) ;
return impl ;
}
(2) yapılandırın kimlik doğrulama yöneticisi: Aşağıda Java yapılandırma tarzıdır
<authentication-manager alias="authenticationManager">
<authentication-provider ref="daoAuthenticationProvider"/>
<!-- other providers if any -->
</authentication-manager>
(3) uzanan bir istisna oluşturun UsernameNotFoundException:
public class DisabledException extends UsernameNotFoundException {
public DisabledException(String msg) {
super(msg);
}
/* other constructors */
}
(4) senin UserDetailsService olarak, herhangi bir ileti anahtarla yukarıdaki istisna sizin gibi:
throw new DisabledException(messages.getMessage(
"AbstractUserDetailsAuthenticationProvider.disabled", "User is disabled"));
İşte
mesajlar SpringSecurityMessageSource.getAccessor()
http://stackoverflow.com/questions/1373407/how-to-display-custom-error-message-in-jsp-for-spring-security-auth- adresinde açıklanan bir yaklaşımı denediniz mi? istisna? – Jk1
Kısmen çalışır. Özel iletiler alabilirim, ancak her zaman AbstractUserDetailsAuthenticationProvider.badCredentials için yapılandırılan iletiyi döndürür. DisabledException'ı atmamıza rağmen, jsp sayfamda badCredentials için tanımlandığı gibi aynı mesajı alıyorum – Jayz
Lütfen hangi sürümü kullandığınızı, hangi noktayı görüntülediğinizi ve mesajı görüntülediğiniz yeri açıklayın. Kullandığınız gerçek web güvenliği yapılandırmasını yüklerseniz muhtemelen en iyisidir. –