我有一個symfony1應用程序與sfGuardUser插件。我需要在我的新symfony2應用程序中使用相同的數據庫。symfony2和symfony1應用程序相同的密碼加密
我應該如何定義密碼編碼器才能匹配symfony1編碼的密碼?
我有一個symfony1應用程序與sfGuardUser插件。我需要在我的新symfony2應用程序中使用相同的數據庫。symfony2和symfony1應用程序相同的密碼加密
我應該如何定義密碼編碼器才能匹配symfony1編碼的密碼?
如果您沒有提供不同的編碼算法,那麼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;
}
}
祝你好運!
它看起來不錯。謝謝。 – brpaz
您爲我節省了一天的調試很老的項目。 – Bukashk0zzz
你只需要[看看代碼](http://trac.symfony-project.org/browser/plugins/sfGuardPlugin/branches/1.3/lib/model/plugin/PluginsfGuardUser.php#L28)來自sfGuard並應用相同的規則。 – j0k