![](/img/trans.png)
[英]Grails - Spring security core and spring security ui plugin inconsistency- unable to login with a newly created user
[英]Grails/Spring Security: Unable to login with a newly created user
我刚开始使用grails并安装了spring-security和spring-security-ui插件。 我按照这里给出的教程。 应用程序启动一个自举用户me
与ROLE_ADMIN
许可。
通过UI覆盖脚本,我能够启动并运行注册功能,并且可以正常工作。 现在,我已经安装了用户管理脚本( grails s2ui-override user
)来尝试添加,编辑和删除用户。
一个新用户被创建得很好,我已经针对HSQLDB实例进行了检查。 但是,如果我现在从应用程序注销并尝试使用新创建的用户登录,则应用程序会告诉我它无法找到具有提供的用户名和密码的用户。
我没有修改默认的注销处理,所以使用/j_spring_security_logout
,正如文档所说,会话无效。
这是一个知道问题吗? 如果是这样,我该如何解决这个问题,或者如果不能如何调试此问题?
编辑:
如果没有添加UI,此问题也会持续存在。 注册为新用户。 完成电子邮件验证后,您将自动登录该站点。 现在注销并尝试再次登录。 它给出了同样的错误。
最终编辑:
UI插件附带RegisterController,它仍然对密码进行编码。 但是,核心附带的较新域类也在执行此操作,建议的做法是控制器不应该这样做。 我注释掉了一行执行编码,登录/注销现在至少可以用于基本场景。
该教程有一个警告
早期版本的插件在域类中没有包含密码加密逻辑,但它使代码更加清晰。
我猜测security-ui插件不知道该更改,并将未加密的密码与数据库中的加密密码进行比较。
我设法解决了我的问题。 问题是双重加密。 在第41行的用户控制器中的spring security ui下,密码被加密,然后由域类再次加密,因此在登录时它正在比较双重加密的密码和单个加密的密码。 为了解决这个问题,我只是在用户控制器中注释了第41行,它正在加密密码
编辑:如果您无法确定编辑控制器的位置,您可以在用户家中找到下载插件的源代码
/.grails/version/projects/projectname/plugins
用于编辑的目录(至少在Mac / Linux上,dunno,你可以在windows中找到它)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.