首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Grails Spring-Security-Core插件-无法验证用户

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

Stack Overflow用户
提问于 2012-01-24 19:05:28
回答 4查看 3.3K关注 0票数 4

因此,我正在努力让spring-security-core-1.2.7.1与Grails 2.0一起工作……

我已经阅读了教程并运行了s2。阅读新插件会为您加密密码,因此我的引导程序如下所示:

代码语言:javascript
复制
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调试'org.springframework.security‘,但我真正得到的结果是:

代码语言:javascript
复制
2012-01-23 23:08:44,875 ["http-bio-8080"-exec-5] DEBUG dao.DaoAuthenticationProvider  - Authentication failed: password does not match stored value
EN

回答 4

Stack Overflow用户

发布于 2012-01-24 20:05:36

我看不出你的代码有什么明显的错误。我使用的是相同版本的Grails和spring安全插件,Bootstrap.groovy中的以下代码适用于我:

代码语言:javascript
复制
def init = { servletContext ->

    // create some roles
    def userRole = createRole('ROLE_USER')
    def adminRole = createRole('ROLE_ADMIN')

    // create some users
    User admin = createUser('Admin', 'admin@mailinator.com', adminRole)
    User user = createUser('User', 'user@yahoo.co.uk', userRole)
}

private User createUser(name, username, role) {

    def defaultPassword = 'password'

    User user = User.findByUsername(username) ?: new User(
            name: name,
            username: username,
            password: defaultPassword,
            passwordConfirm: defaultPassword,
            enabled: true).save()

    if (!user.authorities.contains(role)) {
        UserRole.create user, role
    }
    user
}

private createRole(String roleName) {
    Role.findByAuthority(roleName) ?: new Role(authority: roleName).save()
}
票数 2
EN

Stack Overflow用户

发布于 2014-07-05 19:20:35

我确实遇到过类似的问题。是因为我忘了加上

代码语言:javascript
复制
grails.plugin.springsecurity.userLookup.userDomainClassName ='yourpackage.User'
grails.plugin.springsecurity.userLookup.authorityJoinClassName =yourpackage.UserRole'
grails.plugin.springsecurity.authority.className ='yourpackage.Role'

在此之后,身份验证起作用了。

票数 1
EN

Stack Overflow用户

发布于 2012-11-10 01:21:29

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8985730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档