如何手动给一个密码编码
由于历史原因,Symfony使用了“password encoding” 一词,但它真正指的是“password hashing”。“encoders”实际上是 Cryptographic hash functions(加密函数)。
如果,比如,你把用户存到数据库中,你需要在插入用户信息之前对其密码进行加密。不管对User对象使用什么算法,在控制器中的密码加密都是通过以下方式来决定:
1 2 3 4 5 6 7 8 |
// whatever *your* User object is
// 无论 *你的* User 对象是什么
$user = new AppBundle\Entity\User();
$plainPassword = 'ryanpass';
$encoder = $this->container->get('security.password_encoder');
$encoded = $encoder->encodePassword($user, $plainPassword);
$user->setPassword($encoded); |
要让程序能够执行,确保在 app/config/security.yml
文件中的 encoders
键下,为你的User类(如 AppBundle\Entity\User
)配置了encoder。
$encoder
对象也有一个 isPasswordValid
方法,以 User
对象作为第一个参数,以要检测的明文密码作为第二个参数。
当你让用户提交一个明文密码(如 注册表单、密码修改表单)时,你必须 要有“确保密码不多于4096字符”的验证(步骤)。更多细节参考 如何实现一个简单的注册表单。