grails 的s2-quickstart生成的user domain里进行了
def beforeInsert() {
encodePassword()
}
def beforeUpdate() {
if (isDirty('password')) {
encodePassword()
}
}
protected void encodePassword() {
password = springSecurityService.encodePassword(password)
}
而regester的时候又encode了一次password,导致decode的时候熄火。
除了改插件代码外,新版本多的注册代码中加了个判断,根据配置来决定是否encode
String encodePassword(String password, salt) {
def encode = SpringSecurityUtils.securityConfig.ui.encodePassword
if (!(encode instanceof Boolean) || (encode instanceof Boolean && encode)) {
password = springSecurityService.encodePassword(password, salt)
}
password
}