我的网络应用程序使用 Spring Security 插件进行身份验证和授权。我正在构建某种 API,我需要在其中验证用户密码。
Spring Security 配置为使用具有 5 个 logrounds 和username
属性作为 salt 的 BCrypt:
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')
结果是相同的:每个请求编码的密码都不同。这样我就无法验证用户密码并从数据库中获取有效的用户实例。
任何想法如何解决这个问题?