你可能会遇到,一个系统需要升级,但是原来数据库中的用户密码和symfony的方式不同,怎么才能使用自己的密码验证方式呢?
其实很简单,我们使用fosuserbundle来,演示他。
咱们比如你的数据库密码就是一个md5加密无其他(很单纯,虽然不是最安全,但是为了演示)。
第一步:新建一个加密和比对文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php // src\AppBundle\Security\PasswordEncoder.php namespace AppBundle\Security; use Symfony\Component\Security\Core\Encoder\BasePasswordEncoder; class PasswordEncoder extends BasePasswordEncoder { public function encodePassword($raw, $salt) { return md5($raw); } public function isPasswordValid($encoded, $raw, $salt) { return $this->comparePasswords($encoded, $this->encodePassword($raw, $salt)); } } |
继承了BasePasswordEncoder 这个很重要。
第二步:创建他为服务
1 2 3 |
services: my_password_encoder: class: AppBundle\Security\PasswordEncoder |
第三步:使用它
1 2 3 4 |
# app\config\security.yml security: encoders: FOS\UserBundle\Model\UserInterface: { id: my_password_encoder } |
我们使用现在的fosuser方式登录试试。
ok,成功了