Accueil » Symfony 6 Utiliser les Uuid

Symfony 6 Utiliser les Uuid

Dans cette procédure, je vais vous expliquer comment utiliser les Uuid en tant qu’ID dans Symfony 6. Les UUID permettent de restreindre l’accès des données uniquement aux utilisateurs qui ont normalement accès à celles-ci. Ainsi le fait de changer une valeur dans l’URL ne permettera pas d’accéder à une autre valeur sans connaître l’ID exact tandis qu’avec un ID avec un nombre entier il suffit d’incrémenter la valeur pour accéder aux informations d’autres utilisateurs de l’application.

Logo Symfony

Prérequis :

Utiliser les UUID dans Symfony 6 :

Avant d’utiliser les UUID, il faut importer la librairie suivante :

composer require symfony/uid

Ensuite ajouté l’utilisation de la Classe suivante :

use Symfony\Component\Uid\UuidV6 as Uuid;

Puis dans votre entité, remplacer les annotations de la propriété $id par les annotations suivantes :

#[ORM\Id]
#[ORM\Column(type: 'uuid', unique: true)]
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
#[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')]

Ensuite changer le Typage de cette propriété de int à Uuid :

// Format initial
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private ?int $id = null;
// Format final
#[ORM\Id]
#[ORM\Column(type: 'uuid', unique: true)]
#[ORM\GeneratedValue(strategy: 'CUSTOM')]
#[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')]
private ?Uuid $id = null;

Puis remplacer :

public function getId(): ?int
// Par
public function getId(): ?Uuid

Une fois ces modifications faites, vous pouvez générer les nouvelles migrations :

symfony console make:migration

Puis les déployer :

symfony console d:m:m

Et enfin ajoutez vos Fixtures si vous avez :

symfony console d:f:load

Vous pouvez constater que désormais vos entités on maintenant un UUID au lieu d’un ID :

Symfony 6 Utiliser les Uuid - Résultat

Pour plus de renseignement sur le fonctionnement des UUID : https://fr.wikipedia.org/wiki/Universally_unique_identifier

Source :

https://symfony.com/doc/current/components/uid.html

Susceptible de vous intéresser :