我将 Grails 2.1.1 与 Spring Security 1.2.7.1 和 Spring Security UI 0.2 一起使用。
当我使用内存数据库在 BootStrap.groovy 中创建一些测试用户时,我能够登录和管理用户——一切正常。但是,当我将数据源切换到 MySQL 数据库时,该服务指出,当我尝试登录时,该用户帐户已被禁用。我已检查并且密码似乎正确散列(即,它与数据库中的内容匹配) . 我对用户所做的唯一修改是包含一个研究 ID。在尝试调试代码时,我发现 org.codehaus.groovy.grails.plugins.springsecurity.GrailsUser 指示启用 = false。
任何帮助是极大的赞赏!
我的数据源:
dataSource {
driverClassName = "com.mysql.jdbc.Driver"
dialect = org.hibernate.dialect.MySQL5InnoDBDialect
url = "jdbc:mysql://localhost/users"
username = "root"
password = ""
dbCreate = "create-drop"
}
我的 BootStrap.groovy 代码:
def adminRole = new Role(authority: 'ROLE_ADMIN').save(flush: true)
def userRole = new Role(authority: 'ROLE_USER').save(flush: true)
def testAdmin = new User(username: 'me', enabled: true, password: 'password', studyID: '0')
testAdmin.save(flush: true)
UserRole.create testAdmin, adminRole, true
def testUser = new User(username: '100', enabled: true, password: 'test', studyID: '101')
testUser.save(flush: true)
UserRole.create testUser, userRole, true
assert User.count() == 2
assert Role.count() == 2
assert UserRole.count() == 2
启动应用程序后,我的 User.user 表中的一行。无论我如何更改这些值,登录尝试都会表明用户已被禁用:
id version account_expired account_locked enabled password password_expired studyid username
1 0 1 1 1 5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a... 1 0 me