更改密码表单,用Spring安全性验证旧密码

时间:2013-03-30 14:04:30

标签: grails spring-security

我使用grails进行Web开发和Spring安全性进行身份验证和授权。

我想制作一个简单的表单,允许用户更改密码。这是一个包含三个密码字段的表单。第一个是当前(旧)密码。第二个和第三个是针对新密码进行验证以防止意外错误输入。

问题是我无法找出针对当前密码验证旧密码的正确方法。我考虑过使用springSecurityService.encodePassword函数并比较哈希值来手动完成。但我不确定这是否是正确的做法。

只有已经登录的用户才能访问此表单。如果他们以某种方式获取了会话(用户忘记注销),请求密码可以阻止攻击者更改密码

有弹簧安全方法吗?

3 个答案:

答案 0 :(得分:3)

使用passwordEnconder的Spring Security Core文档中有an example,但springSecurityService.encodePassword也可以。

答案 1 :(得分:2)

这就是我在Grails 2.3和spring-security-core-2.0-RC4中使用的内容。

def springSecurityService 
User activeUser = springSecurityService.currentUser     
def password_old ='password'
if    (!springSecurityService.passwordEncoder.isPasswordValid(activeUser.getPassword(), password_old, null)) {
"password is incorrect do something"

}else log.info "password is correct do something"

答案 2 :(得分:0)

这就是我的服务方式,我验证了对新密码的确认。

a
b
c
d