Grails Spring-Security-Core插件 - 无法验证用户身份

时间:2012-01-24 11:05:28

标签: grails spring-security grails-plugin

因此,我正在试图让spring-security-core-1.2.7.1与Grails 2.0一起工作... ... / / p>

我查看了教程并运行了s2。请注意新插件会为您加密密码,因此我的引导程序如下所示:

def userRole  = Role.findByAuthority('ROLE_USER') ?: new Role(authority: 'ROLE_USER').save(failOnError: true)
    def adminRole = Role.findByAuthority('ROLE_ADMIN') ?: new Role(authority: 'ROLE_ADMIN').save(failOnError: true)

    def adminUser = User.findByUsername('admin') ?: new User(
        username: 'admin',
        password: "admin",
        enabled: true).save(failOnError: true)

        def testUser = User.findByUsername('test') ?: new User(
            username: 'test',
            password: "test",
            enabled: true).save(failOnError: true)

    if (!adminUser.authorities.contains(adminRole)) {
        UserRole.create adminUser, adminRole
    }

    if (!testUser.authorities.contains(userRole)) {
        UserRole.create testUser, userRole
    }

我可以查看H2数据库,我看到用户及其编码密码,看到角色已创建,并且可以看到用户角色映射也已正确创建。

但是,我仍然感到“抱歉,我们无法找到具有该用户名和密码的用户。”在两个用户的登录提示符下。

我已经启用了log4j debug'org.springframework.security',但我真正退出日志的是:

2012-01-23 23:08:44,875 ["http-bio-8080"-exec-5] DEBUG dao.DaoAuthenticationProvider  - Authentication failed: password does not match stored value

3 个答案:

答案 0 :(得分:1)

我确实有类似的问题。是因为我忘了添加

grails.plugin.springsecurity.userLookup.userDomainClassName ='yourpackage.User'
grails.plugin.springsecurity.userLookup.authorityJoinClassName =yourpackage.UserRole'
grails.plugin.springsecurity.authority.className ='yourpackage.Role'

之后认证工作正常。

答案 1 :(得分:0)

您可以通过更新User类来修复多个数据源问题。 见https://stackoverflow.com/q/13296594

答案 2 :(得分:-3)

在OP的原始代码中,为什么用户名在单引号中,密码用双引号括起来。这可能是问题所在。