【发布时间】:2022-01-19 14:08:11
【问题描述】:
我正在开发一个基于 Symfony 4 的项目。我试图让 @UniqueEntity 在 @Encrypted 字段上工作,但我不知道如何操作。
- 没有
@Encrypted注释,@UniqueEntity注释可以防止重复 - 使用
@Encrypted注释,@UniqueEntity注释允许复制
/**
* @ORM\Entity(repositoryClass="App\Repository\DemoRepository")
* @ORM\HasLifecycleCallbacks()
* @UniqueEntity(
* fields={"example"},
* ignoreNull=true,
* )
*
*/
class Demo implements LoggableEntityInterface
{
/**
* @ORM\Column(type="text", nullable=true)
* @Encrypted
*/
private $example;
【问题讨论】:
-
在任何情况下,如果该字段实际上是加密的,Symfony 可能更难以检查是否没有任何其他具有相同值的字段。
-
https://packagist.org/packages/michaeldegroot/doctrine-encrypt-bundle是的,这是我的问题 :) 这是我找到的加密数据库中字段(如电子邮件等)的解决方案。如果您有任何建议,我可以尝试其他方法。 -
不知道那个包是如何工作的。但是拥有一个唯一的字段并对其进行加密并没有多大意义。如果您想在不破坏加密的情况下检查字段是否唯一,您可能希望将哈希存储在不同的字段中。
-
假设我正在添加一个新用户。我不想存储未加密的用户电子邮件,同时我想避免电子邮件重复。你会怎么做?
-
“我不想存储未加密的用户电子邮件”您介意在您的用例中提供一些上下文,其中电子邮件地址被视为如此您是否需要在 RDBMS 所做的任何静态加密的基础上对它们进行加密?我曾在一些非常敏感的环境中工作过,但我从未见过在将电子邮件地址插入任何类型的数据存储之前,在应用程序级别单独选择并对其进行加密。
标签: php symfony symfony4 symfony-validator