我正在尝试加密医疗应用程序的数据,这就是我找到 DoctrineEncryptBundle 的方式(https://packagist.org/packages/michaeldegroot/doctrine-encrypt-bundle)
我仍然是 symfony 4 的新手,文档给出了似乎是以前的 Symfony 版本的方法。
我已经下载了该捆绑包(作曲家需要 michaeldegroot/doctrine-encrypt-bundle)
对于步骤 2:“启用数据库加密捆绑包”文档中的解释与我在 SF4 中所做的比较 这似乎是正确的。
然后,SF4中没有config.yml,我不知道在哪里定义配置(加密器类和密钥文件的路径)。
这个yaml =>
ambta_doctrine_encrypt:
encryptor_class: Halite # or Defuse
secret_directory_path: '%kernel.project_dir%' # Path where to store the keyfiles
Run Code Online (Sandbox Code Playgroud)
文档:https://github.com/michaeldegroot/DoctrineEncryptBundle/blob/master/Resources/doc/configuration.md
我的文件实体患者(我想加密)
`
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Ambta\DoctrineEncryptBundle\Configuration\Encrypted;
/**
* @ORM\Entity
* @ORM\Entity(repositoryClass="App\Repository\PatientRepository")
* @ORM\Table(name="patient")
*/
class Patient {
/**
* @var string
* @Encrypted
* @ORM\Column(type="string")
*/
private $nom;`
Run Code Online (Sandbox Code Playgroud)
控制器:
public function ajouterPatient(Request $request)
{
$patient = new Patient();
$form = $this->createForm(PatientType::class, $patient);
if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
$em = $this->getDoctrine()->getManager();
$patient->setNomsAffichage($patient->getNom()." ".$patient->getPrenom());
$patient->setActif(true);
$em->persist($patient);
$em->flush();
return $this->redirectToRoute('menu_patients');
}
return $this->render('Patients/ajouterPatient.html.twig', array(
'form' => $form->createView(),
));
}
Run Code Online (Sandbox Code Playgroud)
我想我应该在 service.yml 中定义一些东西,比如捆绑包的链接,但我不知道如何做。
任何帮助将不胜感激。
小智 5
我知道这是一个老问题,但对于那些仍然想知道在 Symfony 4 中为这个包定义配置 yaml 文件的人来说,这里是我得到的答案。
在文件config/bundles.php
末尾添加此行来定义 Ambta Symfony 包:
return [
...
Ambta\DoctrineEncryptBundle\AmbtaDoctrineEncryptBundle::class => ['all' => true]
];
Run Code Online (Sandbox Code Playgroud)
在以下位置创建一个新的yaml文件:config/packages/orm_services.yaml
这里可以放置配置。例如:
ambta_doctrine_encrypt:
encryptor_class: Halite
secret_directory_path: '%kernel.project_dir%'
Run Code Online (Sandbox Code Playgroud)