AbstractUserDetailsAuthenticationProviderのhideUserNotFoundExceptionsプロパティをfalseに設定する必要があります。 (これは、このソリューションが今後変更される可能性のあるSpring Securityコードに依存していることを意味します)。ここで
は、手順は次のとおりです(すでに1が、その後falseにそのhideUserNotFoundExceptionsプロパティを設定している場合)
(1)DaoAuthenticationProvider Beanを定義します。上記プロバイダと
@Bean
public AuthenticationProvider daoAuthenticationProvider() {
DaoAuthenticationProvider impl = new DaoAuthenticationProvider();
impl.setUserDetailsService(yourUserDetailsService());
impl.setHideUserNotFoundExceptions(false) ;
return impl ;
}
(2)を構成認証マネージャ:ここでのJava設定のスタイルである
<authentication-manager alias="authenticationManager">
<authentication-provider ref="daoAuthenticationProvider"/>
<!-- other providers if any -->
</authentication-manager>
(3)に延びる例外を作成UsernameNotFoundException:
public class DisabledException extends UsernameNotFoundException {
public DisabledException(String msg) {
super(msg);
}
/* other constructors */
}
(4)あなたのUserDetailsServiceで、好きなメッセージキーで上記の例外をスローします:
throw new DisabledException(messages.getMessage(
"AbstractUserDetailsAuthenticationProvider.disabled", "User is disabled"));
の
ここでメッセージSpringSecurityMessageSource.getAccessor()
あなたはhttp://stackoverflow.com/questions/1373407/how-to-display-custom-error-message-in-jsp-for-spring-security-auth-に記載されているアプローチを試したことがありますか?例外? – Jk1
部分的に動作します。カスタムメッセージを受け取ることはできますが、常にAbstractUserDetailsAuthenticationProvider.badCredentialsに設定されたメッセージが返されます。 DisabledExceptionをスローしたにもかかわらず、私のJSPページのbadCredentialsに定義されているのと同じメッセージが返されます – Jayz
どのバージョンを使用しているのか、どこから例外をスローしているのか、どこにメッセージを表示しているのかを教えてください。使用している実際のWebセキュリティ設定を投稿するのがおそらく最適です。 –