2013-01-08 57 views
3

我有一個symfony1應用程序與sfGuardUser插件。我需要在我的新symfony2應用程序中使用相同的數據庫。symfony2和symfony1應用程序相同的密碼加密

我應該如何定義密碼編碼器才能匹配symfony1編碼的密碼?

+0

你只需要[看看代碼](http://trac.symfony-project.org/browser/plugins/sfGuardPlugin/branches/1.3/lib/model/plugin/PluginsfGuardUser.php#L28)來自sfGuard並應用相同的規則。 – j0k

回答

4

如果您沒有提供不同的編碼算法,那麼Symfony 1.x將使用sha1($salt.$rawPassword)。所以你的PasswordEncoder應該看起來像這樣:

use Symfony\Component\Security\Core\Encoder\PasswordEncoderInterface; 

class PasswordEncoder implements PasswordEncoderInterface 
{ 
    public function encodePassword($raw, $salt) 
    { 
     return sha1($salt.$raw); 
    } 

    public function isPasswordValid($encoded, $raw, $salt) 
    { 
     return $this->encodePassword($raw, $salt) === $encoded; 
    } 
} 

祝你好運!

+0

它看起來不錯。謝謝。 – brpaz

+0

您爲我節省了一天的調試很老的項目。 – Bukashk0zzz

相關問題