Grails Spring-Security-比较密码 -

Ste*_*anM 8 grails spring-security

我使用SpringSecurity 2.0-RC2并希望用户在联机时提供更改密码的可能性.

我的用户域类具有以下内容

def beforeInsert() {
    encodePassword()
}

def beforeUpdate() {
    if (isDirty('password')) {
        encodePassword()
    }
}

protected void encodePassword() {
    password = springSecurityService.encodePassword(password)
}
Run Code Online (Sandbox Code Playgroud)

要检查用户是否正在输入正确的当前密码,我在控制器中执行以下操作:

if (springSecurityService.encodePassword(params.currentPassword) == user.password) {    
Run Code Online (Sandbox Code Playgroud)

...但是(对我而言)支票总是失败.即使我这样做也更奇怪:

            println springSecurityService.encodePassword(params.currentPassword)
            println springSecurityService.encodePassword(params.currentPassword)
Run Code Online (Sandbox Code Playgroud)

我在控制台中收到以下内容

$ 2A $ 10 $ $ sWt7mUSHPFT.Np6m.gXyl.h8tWqblJbwtzQ6EQeMHxXMoGwOffC3e 2A $ 10 $ lwHz1SkNlW8ibznt.mOiruAg5eG/BTtsjM7ChyYVBvamRcrL8tucm

(就像会有盐 - 但我自己没有配置)

我的设置或多或少是默认设置; 除了三个域类的包名称.

由于文件很严重,因为我在这里问到是否有人知道我做错了什么......

MKB*_*MKB 17

试试这个

def passwordEncoder
...
passwordEncoder.isPasswordValid(user.password, params.currentPassword, null)
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此帖子.