あなたは
<bean id="authenticationFilter" class="org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter"
p:authenticationManager-ref="customAuthenticationManager"
p:authenticationFailureHandler-ref="customAuthenticationFailureHandler"
p:authenticationSuccessHandler-ref="customAuthenticationSuccessHandler" />
、カスタム、カスタム認証ユーザーがアクティブになるかどうかをチェックすることができますマネージャか
を作成することができますauthenticationManager
<bean id="customAuthenticationManager"
class="com.mycompany.security.CustomAuthenticationManager" />
CustomAuthenticationManager.java
public class CustomAuthenticationManager implements import org.springframework.security.authentication.AuthenticationManager{
@Override
public Authentication authenticate(Authentication auth)
throws AuthenticationException {
User user = null;
if (auth.getName() == null) {
throw new BadCredentialsException("User does not exists!");
}
user = userService.getUserByUsername(auth.getName());
if (user == null) {
throw new BadCredentialsException("User does not exists!");
}
if (passwordEncoder.isPasswordValid(user.getPassword(), (String) auth.getCredentials(), null)) {
//check if user is activated if not throw appropriate excetion
} else {
throw new BadCredentialsException("User does not exists!");
}
}
それと(適切に設定されている場合)にlogin.jspで今ログインページに戻って
をユーザーをリダイレクトする、
${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}
によって失敗の理由を取得し、ユーザー }に適切なメッセージを表示
嬉しいです –
ありがとう!素晴らしい答え! JSPで、アカウントが有効でないためにユーザーが認証されなかったことをどのように知ることができますか? – checklist
答えを更新しました。 – jddsantaella