我使用的是Spring-Security-Rest,spring-security-core和spring-security-ui插件的Grails v2.4.2。自定義UserDetailsService不被調用 - Grails和Spring安全性核心
我寫了一個自定義UserDetailsService使用戶名不區分大小寫。所有我做的只是試圖覆蓋
UserDetails loadUserByUsername(String username, boolean loadRoles) throws UsernameNotFoundException
我com.example.core.CaseInsensitiveUserDetailsService類定義爲:
class CaseInsensitiveUserDetailsService extends GormUserDetailsService {
/**
* Make The Username Case Insensitive
*/
UserDetails loadUserByUsername(String username, boolean loadRoles) throws UsernameNotFoundException {
Person.withTransaction { status ->
log.debug "Case Insensitive User Details Service"
// Find The Username
def user = Person.findByUsernameIlike(username)
// If User Not Found, Throw Exception
if (!user) {
log.warn "User not found: $username"
throw new UsernameNotFoundException('User not found', username)
}
Collection<GrantedAuthority> authorities = loadAuthorities(user, username, loadRoles)
createUserDetails user, authorities
}
}
}
我resources.groovy包含:
beans = {
userDetailsService(com.example.core.CaseInsensitiveUserDetailsService)
credentialsExtractor(Grails24CredentialExtractor)
// Some Custom Filters Are Also Defined (securityContextRepository, securityContextPersistenceFilter, multipartResolver)
}
它編譯成功,但它從來沒有實際運行我的自定義CaseInsensitiveUserDetailsService。在控制檯中,我從實際的GormUserDetailsService中看到調試語句,而不是我自定義的調試語句。可以做些什麼來使用我的自定義UserDetailsService?
** 注:我一直在關注這兩個教程:
- http://www.stevideter.com/2012/11/17/case-insensitive-usernames-using-spring-security-core-plugin-for-grails/
- http://grails-plugins.github.io/grails-spring-security-core/guide/userDetailsService.html
您是否將其創建爲插件,然後將其安裝到應用程序中? – John
不,它只是一個類 –
你可以顯示你的配置(對安全和日誌記錄部分感興趣)以及請求和響應的輸出嗎? –