[英]Grails Spring Security - custom UserDetailsService makes authenticatedUser null
[英]Grails Spring Security Custom UserDetailsService (goal of Email in place of Username)
我正在使用Grails Spring Security Plugin 1.2.7.3
並希望用戶通過電子郵件地址和密碼進行身份驗證。 我希望電子郵件地址成為主要的登錄ID。
我遇到了關於不區分大小寫的用戶名的以下Nabble帖子 ,其中原始海報試圖做同樣的事情。 但是,我對以下幾點感到困惑:
我知道我需要編寫自己的UserDetailsService
實現並在grails-app/conf/spring/resources.groovy
。
但是,我不確定UserDetailsService
的自定義實現應該去哪個文件夾(最佳實踐)。 我的猜測是/grails-app/services
, /grails-app/utils
,或/src/groovy
。 有沒有人這樣做過,哪里是自定義UserDetailsService
的最佳位置?
我在Docs中閱讀了這一章: http : //grails-plugins.github.com/grails-spring-security-core/docs/manual/guide/11%20Custom%20UserDetailsService.html但是我沒有看到關於Grails文件夾放在哪里。
我通過s2命令創建了我的用戶域類:
s2-quickstart com.philiptenn.security User Role Requestmap
如果我要將User.email
字段重命名為User.username
,以便我的代碼更清晰,那么我是否會受到傷害?
我在這個字段上找了一個Find userLookup.usernamePropertyName = 'username'
,並在DefaultSecurityConfig.groovy中找到了一個: userLookup.usernamePropertyName = 'username'
我可以將其更新為: DefaultSecurityConfig.groovy : userLookup.usernamePropertyName = 'email'
謝謝。
正如您所指出的,您可以在自己的Config.groovy
覆蓋默認安全配置,所有選項都以grails.plugins.springsecurity
,因此它將是grails.plugins.springsecurity.userLookup.usernamePropertyName = 'email'
( docs ) 。 這是我嘗試的第一件事。 如果你查看GormUserDetailsService的源代碼,默認的userDetailsService,你會看到它使用該屬性進行查找。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.