Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Grails Spring Security use email to login

My User domain class extends SecUser.

User has a property 'email'.

Spring security uses SecUser's 'username' to login.

I need to use 'email' to login. Is there a way to do this?

Edit (from the accepted answer):

I deleted SecUser's username property and added email property.

Then I added this line to Config.groovy:

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

like image 389
Tomas Romero Avatar asked Aug 24 '12 00:08

Tomas Romero


2 Answers

RTFM my friend :)

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:

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

newer versions of grails are using a prefix of

grails.plugin.springsecurity instead of grails.plugins.springsecurity

like image 154
chrislovecnm Avatar answered Oct 22 '22 13:10

chrislovecnm


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.

You can override them like this:

grails.plugins.springsecurity.ui.register.emailBody = 'Hi \$user.firstName...'
grails.plugins.springsecurity.ui.forgotPassword.emailBody = 'Hi \$user.firstName...'
like image 25
rotifan Avatar answered Oct 22 '22 13:10

rotifan