2011-09-08 226 views
1

我有一個自定義AuthenticationProvider,它簡單地返回authenticate方法的Authentication對象。我想要做的就是在用戶登錄時爲用戶添加一個角色。這是爲了演示目的,所以我想讓用戶輸入用戶名並讓他們進入。我需要爲他們分配管理員角色。Spring安全和自定義身份驗證提供程序

+0

非常相關教程:HTTP:// WWW .cleancode.co.nz/blog/937/customization-spring-security-authentication –

+0

您可以實現UserDetailService來自定義您的身份驗證過程,無論是從數據庫還是從Web服務,因爲它是由一個開箱即用的AuthenticationProvider實現的認證:DaoAuthenticationProvider是AbstractUserDetailsAuthenticationProvider的一個頭等類,它依賴於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 
    } 
} 
相關問題