我使用grails进行Web开发和Spring安全性进行身份验证和授权。
我想制作一个简单的表单,允许用户更改密码。这是一个包含三个密码字段的表单。第一个是当前(旧)密码。第二个和第三个是针对新密码进行验证以防止意外错误输入。
问题是我无法找出针对当前密码验证旧密码的正确方法。我考虑过使用springSecurityService.encodePassword
函数并比较哈希值来手动完成。但我不确定这是否是正确的做法。
只有已经登录的用户才能访问此表单。如果他们以某种方式获取了会话(用户忘记注销),请求密码可以阻止攻击者更改密码
有弹簧安全方法吗?
答案 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