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?
Zeigen Sie Ihre Benutzerdomäne Klasse –