1
我有一個自定義AuthenticationProvider
,它簡單地返回authenticate
方法的Authentication
對象。我想要做的就是在用戶登錄時爲用戶添加一個角色。這是爲了演示目的,所以我想讓用戶輸入用戶名並讓他們進入。我需要爲他們分配管理員角色。Spring安全和自定義身份驗證提供程序
我有一個自定義AuthenticationProvider
,它簡單地返回authenticate
方法的Authentication
對象。我想要做的就是在用戶登錄時爲用戶添加一個角色。這是爲了演示目的,所以我想讓用戶輸入用戶名並讓他們進入。我需要爲他們分配管理員角色。Spring安全和自定義身份驗證提供程序
當然,有幾種方法可以實現這一點。 我的首選是在定製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
}
}
非常相關教程:HTTP:// WWW .cleancode.co.nz/blog/937/customization-spring-security-authentication –
您可以實現UserDetailService來自定義您的身份驗證過程,無論是從數據庫還是從Web服務,因爲它是由一個開箱即用的AuthenticationProvider實現的認證:DaoAuthenticationProvider是AbstractUserDetailsAuthenticationProvider的一個頭等類,它依賴於UserDetailService提供用戶名和密碼,將它們與用戶輸入進行比較以實現認證。 –