2009-09-24 87 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的保存方法