【发布时间】:2012-04-10 06:01:29
【问题描述】:
我已成功从 acegi 插件迁移到 Spring Security 插件。创建一个新用户工作正常。我可以登录了。
但在数据库中,我有很多使用 acegi 的authenticateService.encodePassword 创建的用户。所以我无法使用那些旧的用户名和密码登录。我猜它是 MD5 或 SHA1 编码算法问题。
只是想知道,如何在不重置密码的情况下使其工作。我尝试设置grails.plugins.springsecurity.password.algorithm="MD5",但没有运气。
有什么建议吗?
包授权
import java.util.Set;
import auth.Role
/**
* User domain class.
*/
class User implements Serializable {
static transients = ['pass','getAuthorities']
static hasMany = [authorities: Role]
static belongsTo = Role
transient springSecurityService
static mapping = {
table 'users' // USER not a valid table name in oracle
}
/** Username */
String username
/** User Real Name*/
String userRealName
/** MD5 Password */
String passwd
String password
/** enabled */
boolean enabled
String email
boolean emailShow
/** description */
String description = ''
/** plain password to create a MD5 password */
String pass = '[secret]'
boolean accountExpired
boolean accountLocked
boolean passwordExpired
String toString() {
return userRealName
}
static constraints = {
username(blank: false, unique: true)
userRealName(blank: false)
passwd(blank: false)
password(blank: false)
enabled()
description(nullable:true)
}
/*Set<Role> getAuthorities() {
Role.findAllByUser(this).collect { it.role } as Set
}*/
def beforeInsert() {
encodePassword()
}
def beforeUpdate() {
if (isDirty('password')) {
encodePassword()
}
}
protected void encodePassword() {
password = springSecurityService.encodePassword(password,null)
}
}
【问题讨论】:
标签: spring security grails migration spring-security