【问题标题】:Grails Spring Security Custom UserDetailsService (goal of Email in place of Username)Grails Spring Security 自定义 UserDetailsS​​ervice(电子邮件代替用户名的目标)
【发布时间】:2012-09-08 18:52:43
【问题描述】:

我正在使用Grails Spring Security Plugin 1.2.7.3 并希望用户通过电子邮件地址和密码进行身份验证。我希望电子邮件地址成为主要登录 ID。

我遇到了以下Nabble post regarding case insensitive usernames,原始发帖人正试图这样做。但是,我在几点上有点困惑:

  1. 我知道我需要编写自己的UserDetailsService 实现并将其注册到grails-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 以使我的代码更清晰,我会陷入痛苦的世界吗?

    我在这个字段上做了一个 Find Usages,一个突出在 DefaultSecurityConfig.groovy 中:userLookup.usernamePropertyName = 'username'

    我可以将其更新为: DefaultSecurityConfig.groovy:userLookup.usernamePropertyName = 'email'

谢谢。

【问题讨论】:

    标签: grails spring-security


    【解决方案1】:

    正如您所指出的,您可以覆盖您自己的Config.groovy 中的默认安全配置,这些选项都以grails.plugins.springsecurity 开头,因此它将是grails.plugins.springsecurity.userLookup.usernamePropertyName = 'email' (docs)。这是我要尝试的第一件事。如果您查看 GormUserDetailsService 的来源,即默认的 userDetailsS​​ervice,您会看到它使用该属性进行查找。

    【讨论】:

    • 谢谢,这有效,我现在正在使用电子邮件。还有一个问题......我应该在哪里放置自定义 Spring Security UserDetailsService?我在想/grails-app/services,那是正确的地方吗?
    • 我希望其他人能参与进来,我注意到在我的几个应用程序中,我在 /src/groovy 中有我的 CustomUserDetailsService,但想不出有什么好的理由为什么它在那里而不是 @ 987654330@.
    • 没问题,谢谢。我可能会把它放在src/groovy 中,因为这听起来可行。
    • @doelleri - /src/groovy 中的类仅被视为“普通”spring bean,而 Grails 服务对它们做了更多的工作,并且在它们如何连接到通过 Spring 做的事情。
    • @cdeszaq - 由于自定义 UserDetailsS​​ervice bean 必须在 resources.groovy 中声明,这是否等同?
    猜你喜欢
    • 2013-02-11
    • 1970-01-01
    • 2013-05-12
    • 2012-12-13
    • 2014-10-12
    • 2014-10-06
    • 2016-03-09
    • 1970-01-01
    • 2017-05-20
    相关资源
    最近更新 更多