![](/img/trans.png)
[英]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.