【发布时间】:2013-06-23 10:58:52
【问题描述】:
我的网络应用正在使用 Spring Security 插件进行身份验证和授权。我正在构建某种 API,我需要在其中验证用户密码。
Spring Security 配置为使用 BCrypt 和 5 个 logrounds 和 username 属性作为盐:
grails.plugins.springsecurity.password.algorithm = 'brcypt'
grails.plugins.springsecurity.password.bcrypt.logrounds = 5
grails.plugins.springsecurity.dao.reflectionSaltSourceProperty = 'username' // password salting
现在,我想在我的控制器中验证用户密码并登录。为此,我打电话给springSecurityService.encodePassword(cmd.password, cmd.username)
cmd 是带有我的参数的命令对象。问题是,在每个请求中,使用springSecurityService 编码的密码与数据库中的用户密码不同,而且永远不会相同。我也尝试在encodePassword 调用中使用常量值,如下所示:
springSecurityService.encodePassword('foo', 'bar') 和结果是一样的:每个请求的编码密码都是不同的。这样我就无法验证用户密码并从数据库中获取有效的用户实例。
有什么办法解决这个问题吗?
【问题讨论】:
标签: grails spring-security passwords salt