简体   繁体   English

Grails Spring Security使用电子邮件登录

[英]Grails Spring Security use email to login

My User domain class extends SecUser. 我的用户域类扩展了SecUser。

User has a property 'email'. 用户拥有“电子邮件”属性。

Spring security uses SecUser's 'username' to login. Spring安全性使用SecUser的“用户名”登录。

I need to use 'email' to login. 我需要使用'email'登录。 Is there a way to do this? 有没有办法做到这一点?

Edit (from the accepted answer): 编辑(从接受的答案):

I deleted SecUser's username property and added email property. 我删除了SecUser的用户名属性并添加了电子邮件属性。

Then I added this line to Config.groovy: 然后我将这行添加到Config.groovy:

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

RTFM my friend :) RTFM我的朋友:)

http://grails-plugins.github.com/grails-spring-security-core/docs/manual/guide/single.html#4.1%20Person%20Class 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

Add to Config.grooy: 添加到Config.grooy:

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

newer versions of grails are using a prefix of 较新版本的grails使用的是前缀

grails.plugin.springsecurity instead of grails.plugins.springsecurity grails.plugin.springsecurity而不是grails.plugins.springsecurity

If you're also using the Spring Security UI plugin be aware that the default text for forgotten password and user registration emails reference the username field. 如果您还使用Spring Security UI插件,请注意忘记密码和用户注册电子邮件的默认文本引用用户名字段。

You can override them like this: 您可以像这样覆盖它们:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM