很抱歉,我们找不到具有该用户名和密码的用户。(GrailsSpring安全内核)
我是Grails新手,尝试使用SpringSecurityCore插件为用户分配角色。我把我的项目称为“我的项目” 在为我的模型生成了控制器和视图之后,在很抱歉,我们找不到具有该用户名和密码的用户。(GrailsSpring安全内核),grails,spring-security,Grails,Spring Security,我是Grails新手,尝试使用SpringSecurityCore插件为用户分配角色。我把我的项目称为“我的项目” 在为我的模型生成了控制器和视图之后,在Config.groovy中,我设置了访问/userMyProject/所需的登录名: grails.plugin.springsecurity.controllerAnnotations.staticRules = [ '/userMyProject/**': ['ROLE_ADMIN'] ] 然后在Bo
Config.groovy
中,我设置了访问/userMyProject/所需的登录名:
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
'/userMyProject/**': ['ROLE_ADMIN']
]
然后在BootStrap.groovy
中,我会自动创建一些用户和角色:
def init = { servletContext ->
def role1 = new Role();
role1.setAuthority("ROLE_ADMIN")
role1.save();
def user1 = new UserMyProject();
// ... assigning name, username, password...
user1.save();
new UserMyProjectRole(userCwitter:user1, role:role1).save();
}
但是,当我进入我的UserMyProjectController
页面时,它会正确打开登录页面,但总是大叫对不起,我们无法找到具有该用户名和密码的用户。当我能够在数据库中看到它时
感谢您的帮助。部分:
// ... assigning name, username, password...
您是否对密码进行编码(1.2版之前)
这是一个很好的参考资料
编辑:
您确定用户已保存在th DB中吗?添加
保存(flush:true,failOnError:true)
并检查数据库中是否有您的用户。根据您使用的插件版本,可能是您分配密码的方式。你能用插件版本和你用来填充用户密码的代码更新你的问题吗?@Gregg我用的是插件2.0,我只做了user.setPassword('password')
,也许这就是问题所在?视情况而定,查看你的用户域。使用setPassword()时是否对密码进行哈希处理?如果密码未在用户域中进行哈希处理,则Benoit的答案是正确的方法。我在用户中有以下方法:def beforeist(){encodePassword()}
,def beforeUpdate(){If(isDirty('password')){encodePassword()}
和protected void encodePassword(){password=springSecurityService.encodePassword(password)}
在较新版本的插件中,如果使用搭建的用户域,则不需要这样做。感谢您的回答。我尝试了这个,但仍然得到这个错误。
def springSecurityService
...
springSecurityService.encodePassword('password')