2016-08-11 4 views
0

I angepasst haben grails.plugin.springsecurity.userLookup.usernamePropertyName = "email" aber die Standard-Rendering-Verhalten für die E-Mail-Körper mit fehlschlagen:Grails 3 Spring Security UI Passwort vergessen leere URL & Benutzer

No such property: username for class

daher besonders angefertigt ich emailBody in meinem application.groovy:

grails.plugin.springsecurity.ui.forgotPassword.emailBody = "Dear ${user.email} , Please follow <a href='${url}'>this link</a> to reset your password. This link will expire shortly."

weil nach der Dokumentation:

Die Eigenschaft emailBody sollte ein GString sein und die Benutzerdomänenklasseninstanz im Gültigkeitsbereich der Benutzervariablen und die generierte URL enthalten, auf die Sie klicken können, um das Kennwort in der URL-Variablen zurückzusetzen.

jedoch die params Karte, die die Eigenschaften in meinem MailStrategy enthält, ist leer für die user.email und url Werte:

[to:[email protected], 
from:[email protected], subject:Reset your password for your account, 
html:Dear [:], Please follow <a href='[:']>this link</a> to reset your password. This link will expire shortly.] 

Beachten Sie die [:] und [:] für die user.email und url Werte.

ist die Feder-Sicherheits-Plugin mit diesen Werten in application.groovy konfiguriert:

grails.plugin.springsecurity.userLookup.userDomainClassName = 'blah.Account' 
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'blah.AccountRole' 
grails.plugin.springsecurity.authority.className = 'blah.Role' 
grails.plugin.springsecurity.requestMap.className = 'blah.Requestmap'  
grails.plugin.springsecurity.securityConfigType = 'Annotation' 

Die Account Klasse ist definiert als:

String email 
String password 
Date emailVerified = null 
boolean enabled = true 
boolean accountExpired 
boolean accountLocked 
boolean passwordExpired 

Set<Role> getAuthorities() { 
    AccountRole.findAllByAccount(this)*.role 
} 

def beforeInsert() { 
    encodePassword() 
} 

def beforeUpdate() { 
    if (isDirty('password')) { 
     encodePassword() 
    } 
} 

protected void encodePassword() { 
    password = springSecurityService?.passwordEncoder ? springSecurityService.encodePassword(password) : password 
} 

static transients = ['springSecurityService'] 

static constraints = { 
    password blank: false, password: true 
    email blank: false, unique: true 
    emailVerified nullable: true 
} 

static mapping = { 
    password column: '`password`' 
} 

Wie kann ich den Benutzernamen und was noch wichtiger ist die URL gemacht haben für mich kann ich also das vergessene passwort email senden?

+0

Zeigen Sie Ihre Benutzerdomäne Klasse –

Antwort

0

GString sollte von " nicht aus '

beginnen so statt grails.plugin.springsecurity.ui.forgotPassword.emailBody = '...'

Sie verwenden sollten. grails.plugin.springsecurity.ui.forgotPassword.emailBody = "..."

+0

Es ist sehr wahrscheinlich, dies ist nur ein Formatierungsfehler beim Bearbeiten der Frage Lassen Sie mich überprüfen ... –

+0

Formatierungsfehler, es ist definiert mit ". Aktualisierter Beitrag mit weiteren Informationen –

Verwandte Themen