2009-09-24 88 views
1

我正在使用acegi groovy插件进行用户注册和身份验证。 插件附带的用户域类具有以下定义(和注释)。Acegi密码加密

class User { 
static transients = ['pass'] 
static hasMany = [authorities: Role] 
static belongsTo = Role 

/** Username */ 
String username 
/** User Real Name*/ 
String userRealName 
/** MD5 Password */ 
String passwd 
/** enabled */ 
boolean enabled 

String email 
boolean emailShow 

/** description */ 
String description = '' 
... 

}

等。因此我认为密码加密方法是MD5。

我必须注册成千上万的用户,为每个用户生成一个随机密码。 (用户名已被提供)。

我写了一个脚本,它会生成随机密码和MD5加密密码,并将相应的插入插入到DB中。 不幸的是这些用户都不能登录。

是否使用MD5加密的acegi安全插件?

似乎是它正在使用别的东西。 不幸的是我没有在文档中找到任何东西。

任何人都知道这个加密是如何完成的?

谢谢!

路易斯

回答

1

如果您正在使用DaoAuthenticationProvider并没有设置passwordEncoder属性,默认密码编码器PlaintextPasswordEncoder。要配置MD5密码编码器,请执行

<bean 
     id="passwordEncoder" 
     class="org.acegisecurity.providers.encoding.Md5PasswordEncoder"/> 

    <bean 
     id="daoAuthenticationProvider" 
     class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"> 
    <property name="userDetailsService" ref="userDetailsService"/> 
    <property name="passwordEncoder" ref="passwordEncoder"/> 
    </bean> 
+0

感谢您的回答。为你+1。不,我没有设置任何东西。现在,我在DefaultSecurityConfig.groovy发现算法是'SHA'。 你知道如何生成SHA加密的密码吗? 谢谢! – Luixv 2009-09-24 16:00:38

+2

echo -n password | openssl sha1 – Roshan 2009-09-24 21:35:29

+0

谢谢Roshanico! – Luixv 2009-09-25 06:53:04

0

或者您可以使用authenticateService.encodePassword(“password”)。例如看插件的RegisterController的保存方法