因此,我正在试图让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
答案 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的原始代码中,为什么用户名在单引号中,密码用双引号括起来。这可能是问题所在。