2

春のセキュリティ 3.1.3 を使用しています。私が構築しているアプリでは、ユーザーがログインしようとすると、ユーザー名とパスワードを確認するだけでなく、アカウントを検証するために追加のチェックを行う必要があります (具体的には、アカウントに、ユーザーがログインしていることを示すフラグが設定されていないことを確認します)。ログイン禁止)。私はこれについて最善の方法について混乱しています。

認証フィルター Bean を作成し、Spring xml の form-login 要素に含める必要がありますか? または、ユーザーがユーザー名/パスワードの要件に成功した場合にのみ実行される認証成功フィルターで何かをする必要がありますか? または、他の何か?

4

1 に答える 1

4

UserDetailsS​​erviceを実装するカスタム ユーザー詳細サービスを定義します。クラスUserのインスタンスにユーザー資格情報を入力します。フィールドを使用するenabledaccountNonLocked、禁止されたユーザーに使用できます。

@Service("userDetailsService")
public class MyUserDetailsService implements UserDetailsService {

    @Transactional(readOnly = true)
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {   

       // load user data from repository
       String password = ...
       boolean enabled = ...
       // ...
       UserDetails user = new User(username, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
       return user;     
    }   
}

次に、サービスを の認証マネージャーに接続しますspring-security.xml

<security:authentication-manager>   
    <security:authentication-provider user-service-ref="userDetailsService">
    ...
<security:authentication-manager>  
于 2013-07-03T20:36:07.520 に答える