2016-08-11 52 views
0

我已经定制grails.plugin.springsecurity.userLookup.usernamePropertyName = "email"但对于邮件正文的默认渲染行为将失败:Grails的3 Spring Security的UI忘记密码空白URL和用户

No such property: username for class

所以我在application.groovy定制emailBody

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."

因为根据文档:

emailBody属性应该是GString,并且将在用户变量中包含用户域类实例,并且生成的url用于单击以重置url变量中的密码。

但是,包含在我的MailStrategy属性的PARAMS映射为空,为user.emailurl值:

[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.] 

通知的[:][:]user.emailurl值。

弹簧安全插件配置了这些值在application.groovy

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' 

Account类定义为:

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`' 
} 

怎样才可以有用户名和更重要的是URL呈现对我来说,我可以发送忘记密码的电子邮件?

+0

显示您的用户领域类 –

回答

0

GString应该没有从

所以不是grails.plugin.springsecurity.ui.forgotPassword.emailBody = '...'

你应该使用开始:grails.plugin.springsecurity.ui.forgotPassword.emailBody = "..."

+0

它极有可能这只是一个格式错误编辑问题时,让我检查... –

+0

格式错误,它使用“”定义。有更多信息更新后 –