2

我在更新 User 类的密码字段时遇到问题,我在 grails 中使用 SpringSecurity 插件,看到它应该像这样完成但不起作用......

user.password = springSecurityService.encodePassword(
                params.password, userInstance.username)

也试过

user.password = springSecurityService.encodePassword(
                params.password)

有任何想法吗?

4

2 回答 2

2

如果您使用的是更新版本的插件(1.2.7 或更高版本),那么您不希望像您正在做的那样明确编码密码,因为 User 类中生成的代码会为您完成。仅springSecurityService.encodePassword在您的域类没有调用时才调用,否则您将进行双重编码并且无法登录。

如果您自己对密码进行编码,那么您显示的第一个版本使用用户名作为盐,第二个版本没有盐。加盐密码是一个好主意,但不是必需的 - 您可以在文档第 12.2 节中阅读它 - http://grails-plugins.github.com/grails-spring-security-core/docs/manual/

于 2012-04-08T22:07:51.793 回答
0

您可能想看看 Grails Spring Sec 插件的作者在他的 ui 插件中是如何做到的

https://github.com/grails-plugins/grails-spring-security-ui/blob/master/grails-app/controllers/grails/plugins/springsecurity/ui/UserController.groovy

于 2012-04-08T19:21:36.370 回答