在Symfony 3中编码用户密码的最佳方法是什么?

时间:2016-01-06 10:37:52

标签: php symfony

我知道我可以使用这个编码器:

$encoder = $this->container->get('security.password_encoder');
$encoded = $encoder->encodePassword($user, $plainPassword);

但是什么时候应该使用它? 我可以在调用setPassword()方法之前编码密码。或者我可以在setPassword()方法中对密码进行编码。或者我可能应该创建一个自定义doctrine数据类型,它会在保存到数据库之前对密码进行编码?或者是其他东西?哪种变体更好?

2 个答案:

答案 0 :(得分:3)

如果您不为用户使用任何捆绑包(例如FOSUserBundle),我建议您利用原则events preInsert和{{1} }

通过这种方式,您可以集中代码并确保每次用户编写"进入数据库,您的操作将被执行。

请注意

如果preUpdate没有$plainPassword的值,也许你应该执行一些操作,更一般地说,我打赌你需要实现一些逻辑来避免编码密码“#39} ; s已编码

答案 1 :(得分:0)

实践是以加密形式将密码存储在DB中。然后在登录期间从用户那里获取密码,再次加密,从DB读取加密密码,比较两者;通过/失败取决于匹配/不匹配。

相关问题