很抱歉,我们找不到具有该用户名和密码的用户。(GrailsSpring安全内核)

很抱歉,我们找不到具有该用户名和密码的用户。(GrailsSpring安全内核),grails,spring-security,Grails,Spring Security,我是Grails新手,尝试使用SpringSecurityCore插件为用户分配角色。我把我的项目称为“我的项目” 在为我的模型生成了控制器和视图之后,在Config.groovy中,我设置了访问/userMyProject/所需的登录名: grails.plugin.springsecurity.controllerAnnotations.staticRules = [ '/userMyProject/**': ['ROLE_ADMIN'] ] 然后在Bo

我是Grails新手,尝试使用SpringSecurityCore插件为用户分配角色。我把我的项目称为“我的项目”

在为我的模型生成了控制器和视图之后,在
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')