看起来beforeInsert永远不会触发,并且密码以纯文本格式存储在DB中,我有一个User域类,如下所示:
class User {
String email
String name
String surname
String phone
String password
static constraints = {
email(blank:false, email:true, unique:true)
name(blank:false)
surname(blank:false)
phone(blank:false)
password(blank:false, password:true)
}
def beforeInsert = { encodePassword() }
def beforeUpdate() {
if (isDirty('password')) {
encodePassword()
}
}
protected void encodePassword() {
password = springSecurityService.encodePassword(password)
}
}
知道我在做什么错吗?
提前致谢!
请您参考如下方法:
这很奇怪,我不知道为什么,但是这行得通,我将beforeInsert var更改为一个方法,并添加了瞬时springSecurityService
class User {
transient springSecurityService
String email
String name
String surname
String phone
String password
static constraints = {
email(blank:false, email:true, unique:true)
name(blank:false)
surname(blank:false)
phone(blank:false)
password(blank:false, password:true)
}
def beforeInsert() {
encodePassword()
}
def beforeUpdate() {
if (isDirty('password')) {
encodePassword()
}
}
protected void encodePassword() {
password = springSecurityService.encodePassword(password)
}
}




