2011-09-08 21 views
1

AuthenticationProvider私はauthenticateメソッドのAuthenticationオブジェクトを返すだけのカスタムを持っています。私がしたいのは、ログイン時にユーザーに役割を追加することです。これはデモ目的のためです。ユーザーがユーザー名を入力して受け入れるだけです。管理役割を割り当てる必要があります。スプリングセキュリティとカスタム認証プロバイダ

+0

非常に関連するチュートリアル:のhttp:// WWW .cleancode.co.nz/blog/937/customization-spring-security-authentication –

+0

UserDetailServiceを実装するだけで、データベースまたはWebサービスから認証プロセスをカスタマイズすることができます。これは、Outbox of AuthenticationProvider mentation:DaoAuthenticationProviderは、AbstractUserDetailsAuthenticationProviderのconceretクラスであり、UserDetailServiceを使用してユーザー名とパスワードを提供し、ユーザー入力と比較して認証を取得します。 –

答えて

4

もちろん、これを達成する方法はいくつかあります。 私の好みのものはカスタムでこれを行いますUserDetailsService。唯一の方法はloadUserByUsernameで、UserDetailsというインスタンスを返します。 UserDetailsを構築するときに、GrantedAuthorityを追加できます。

だからまず、あなたがあなたのアプリケーションコンテキストのコンフィギュレーションファイルにカスタムUserDetailsServiceを宣言します:

<bean id="myCustomUDS" class="com.myapp.AppUDS" /> 

<sec:authentication-manager alias="authenticationManager"> 
    <sec:authentication-provider user-service-ref="myCustomUDS"> 
    </sec:authentication-provider> 
</sec:authentication-manager> 

を次に、クラス自体を記述します。

public class AppUDS implements UserDetailsService { 
    public UserDetails loadUserByUsername(String username) 
      throws UsernameNotFoundException, DataAccessException { 
     //create your concrete UserDetails 
     //add your custom role (i.e. GrantedAuthority) to that object (that will be added to all users) 
     //return it 
    } 
} 
関連する問題