Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Symfony 3中对用户密码进行编码的最佳方法是什么?_Php_Symfony - Fatal编程技术网

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

Php 在Symfony 3中对用户密码进行编码的最佳方法是什么?,php,symfony,Php,Symfony,我知道我可以使用这个编码器: $encoder = $this->container->get('security.password_encoder'); $encoded = $encoder->encodePassword($user, $plainPassword); 但是我什么时候应该用它呢? 我可以在调用setPassword()方法之前对密码进行编码。或者我可以在setPassword()方法中对密码进行编码。或者我应该创建一个自定义的数据类型,在保存到数据库之前

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

$encoder = $this->container->get('security.password_encoder');
$encoded = $encoder->encodePassword($user, $plainPassword);
但是我什么时候应该用它呢?
我可以在调用setPassword()方法之前对密码进行编码。或者我可以在setPassword()方法中对密码进行编码。或者我应该创建一个自定义的数据类型,在保存到数据库之前对密码进行编码?还是别的什么?哪种变体更好?

如果您不为用户使用任何捆绑包(如),我建议您利用doctrine的
预插入
预更新

这样,您可以集中您的代码,并确保每次用户“写入”数据库时,您的操作都将被执行

请注意
如果
$plainPassword
preUpdate
中没有一个值,也许您应该执行一些操作,更一般地说,我打赌您需要实现一些逻辑来避免对已经编码的密码进行编码。实践是以加密形式将密码存储在数据库中。然后在登录过程中从用户处获取密码,再次加密,从数据库中读取加密的密码,比较两者;通过/失败取决于匹配/不匹配

我相信你不应该加密你的密码,因为这是一个可逆的操作。你必须把它弄碎,否则它是不可逆的。是的,我会改正的。我上面描述的流是单向散列的,但我使用了加密这个词。