看起来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) 
    } 
} 


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!