2010-02-25 29 views
1

有誰知道我如何通過authlogic hasing算法運行純文本密碼而不使用rails嗎?它看起來像authlogic的默認是sha512。Rails authlogic密碼散列算法只使用紅寶石

我有一個純文本密碼的數據庫(是的,我知道...壞),需要將它們導入到使用authlogic設置的新數據庫中。

這個ruby腳本在rails之外,所以我不想使用基於rails的authlogic命令。

需要 'authlogic'

在Ruby腳本

我是新來的紅寶石模塊

但試圖調用類的密碼方法:

Authlogic :: ActsAsAuthentic :: Password :: Methods :: InstanceMethods.password('password_here')

我得到了一個'沒有密碼方法'的錯誤,但在authlogic代碼中有一個'密碼'方法在該模塊堆棧下。

謝謝!

回答

3

我不會直接嘗試導入它們,因爲請記住,您可能還需要創建「鹽」。你應該創造一個全新的「用戶」爲每個您目前使用的:

User.create({:username => username, :email => email, :password => password, :password_confirmation => password }) 

而且這樣你就會知道它在做它想要的authlogic方式。只要您的用戶模型使用authlogic,它就會使用authlogic的方法來保存密碼。

+0

之前我有點迷路了。我在這個腳本中沒有當前的用戶模型(或者任何模型)(這完全在軌道之外,因爲我試圖移動大約60個表格)。 我將如何創建一個在rails之外使用authlogic的用戶類? 我嘗試: 類用戶 「喬」,:密碼=> 「等等」}) 端 這給了我的錯誤 – djburdick 2010-02-25 02:28:26

1

您可以使用

transition_from_crypto_providers 

選項Authlogic。

從文檔報價

比方說,你最初加密 您的密碼與SHA1。 Sha1是 開始加入與MD5 一方,你想切換到 強東西。沒問題,只需指定 您的新改進算法 crypt_provider選項,然後讓 Authlogic知道您正在使用此選項從Sha1轉換 。 Authlogic 將處理所有事情, 包括將您的用戶轉換爲 新算法。下次用戶登錄時,他們將被授予 訪問使用舊算法和 他們的密碼將重新與 新的算法。所有新用戶將顯然使用新算法 以及。

這樣您就可以將舊用戶導入其現有密碼,並且會在用戶登錄時更新它們。

當然,如果你只是想用從Authlogic的加密方法,沒有任何的Rails的東西可言,只是將代碼從 http://github.com/binarylogic/authlogic/blob/master/lib/authlogic/crypto_providers/sha512.rb

0

注意複製上面的回答: 一定要使用腳本/控制檯然後:

load 'ruby_script.rb' 

運行它。 我試圖讓這與irb一起工作,當然這不起作用。