问题 Grails Spring Security使用电子邮件登录


我的用户域类扩展了SecUser。

用户拥有“电子邮件”属性。

Spring安全性使用SecUser的“用户名”登录。

我需要使用'email'登录。有没有办法做到这一点?

编辑(从接受的答案):

我删除了SecUser的用户名属性并添加了电子邮件属性。

然后我将这一行添加到Config.groovy:

grails.plugins.springsecurity.userLookup.usernamePropertyName ='email'


7684
2017-08-24 00:38


起源



答案:


RTFM我的朋友:)

http://grails-plugins.github.com/grails-spring-security-core/docs/manual/guide/single.html#4.1%20Person%20Class

userLookup.usernamePropertyName 'username'  User class username field

添加到Config.grooy:

grails.plugins.springsecurity.userLookup.usernamePropertyName='email'

较新版本的grails使用的是前缀

grails.plugin.springsecurity 代替 grails.plugins.springsecurity


15
2017-08-24 01:02



谢谢!我终于做了工作 - Tomas Romero
首先,我修改了答案在插件的配置文件中提到的行。很可惜,该文件未经过版本控制。然后,我意识到我必须覆盖Config.groovy文件中的配置。我添加了以下内容:grails.plugins.springsecurity.userLookup.usernamePropertyName ='email' - Tomas Romero
fyi,在更新版本的spring security中,前缀已经改变。 “您的安全配置设置使用旧前缀'grails.plugins.springsecurity',但现在必须使用'grails.plugin.springsecurity'” - Ed J
谢谢@EdJ我在答案中补充说 - chrislovecnm


答案:


RTFM我的朋友:)

http://grails-plugins.github.com/grails-spring-security-core/docs/manual/guide/single.html#4.1%20Person%20Class

userLookup.usernamePropertyName 'username'  User class username field

添加到Config.grooy:

grails.plugins.springsecurity.userLookup.usernamePropertyName='email'

较新版本的grails使用的是前缀

grails.plugin.springsecurity 代替 grails.plugins.springsecurity


15
2017-08-24 01:02



谢谢!我终于做了工作 - Tomas Romero
首先,我修改了答案在插件的配置文件中提到的行。很可惜,该文件未经过版本控制。然后,我意识到我必须覆盖Config.groovy文件中的配置。我添加了以下内容:grails.plugins.springsecurity.userLookup.usernamePropertyName ='email' - Tomas Romero
fyi,在更新版本的spring security中,前缀已经改变。 “您的安全配置设置使用旧前缀'grails.plugins.springsecurity',但现在必须使用'grails.plugin.springsecurity'” - Ed J
谢谢@EdJ我在答案中补充说 - chrislovecnm


如果您还使用Spring Security UI插件,请注意忘记密码和用户注册电子邮件的默认文本引用用户名字段。

您可以像这样覆盖它们:

grails.plugins.springsecurity.ui.register.emailBody = 'Hi \$user.firstName...'
grails.plugins.springsecurity.ui.forgotPassword.emailBody = 'Hi \$user.firstName...'

0
2018-04-27 15:32