2012-09-16 49 views
3

我正在使用Grails Spring Security Plugin 1.2.7.3並希望通過電子郵件地址和密碼進行用戶身份驗證。我希望電子郵件地址成爲主要的登錄ID。Grails Spring Security自定義UserDetailsS​​ervice(電子郵件的目標代替用戶名)

我遇到了以下Nabble post regarding case insensitive usernames,其中原來的海報正在嘗試做同樣的事情。但是,我是一個有點困惑的幾個要點:

  1. 我明白,我需要寫我自己的實現的UserDetailsServicegrails-app/conf/spring/resources.groovy註冊。

    但是,我不確定哪個文件夾UserDetailsService的自定義實施應該去(最佳實踐)。我的猜測是/grails-app/services,/grails-app/utils/src/groovy。有沒有人做過這個之前和自定義UserDetailsService最好的地方在哪裏?

    我讀的文檔本章內容:http://grails-plugins.github.com/grails-spring-security-core/docs/manual/guide/11%20Custom%20UserDetailsService.html,但我真的沒有看到什麼Grails的文件夾,把它在指導

  2. 我通過S2命令創建我的用戶域類:

    s2-quickstart com.philiptenn.security User Role Requestmap 
    

    如果我要將字段User.username重命名爲User.email以便我的代碼更清晰,我是否會受到傷害?

    我做了這個領域查找使用實例,一個在DefaultSecurityConfig.groovy伸出:userLookup.usernamePropertyName = 'username'

    我能不能更新此閱讀: DefaultSecurityConfig.groovyuserLookup.usernamePropertyName = 'email'

謝謝。

回答

4

正如你指出的那樣,你可以覆蓋默認的安全CONFIGS在自己Config.groovy,選項所有grails.plugins.springsecurity開始,所以這將是grails.plugins.springsecurity.userLookup.usernamePropertyName = 'email'docs)。這是我第一次嘗試。如果您檢查GormUserDetailsService(默認userDetailsS​​ervice)的來源,您會看到它使用該屬性進行查找。

+0

謝謝,這工作,我現在使用電子郵件。還有一個問題......我應該在哪裏放置一個自定義的Spring Security UserDetailsS​​ervice?我在想'/ grails-app/services',那是對的嗎? –

+0

我希望別人可能會考慮到這一點,我注意到在我的幾個應用程序中,我在'/ src/groovy'中使用了'CustomUserDetailsS​​ervice',但可以認爲它沒有很好的理由,而不是在'grails-app/services'。 – doelleri

+0

沒問題,謝謝。我可能會把它放在'src/groovy'中,因爲它聽起來像是可行的。 –

相關問題