Atelier framework Web côté serveur Symfony 5
TP7: Authentification
1. Pour s’authentifier il faut commencer par créer une entité spécifique User en
utlisant la commande suivante :
php bin/console make:user
2. Générer le mapping avec la BD
php bin/console doctrine:migrations:diff
puis
php bin/console doctrine:migrations:migrate
3. afin de créer le module d’authentification, il faut exécuter cette commande
php bin/console make:Auth
4. Pour créer le module inscription il faut taper cette commande.
php bin/console make:registration-form
5. Nous avons maintenant la fonction qui permet de faire l’authentification, son code est le
suivant :
public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $providerKey)
{
if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
return new RedirectResponse($targetPath);
}
// For example : return new RedirectResponse($this->urlGenerator->generate('some_route'));
throw new \Exception('TODO: provide a valid redirect inside '.__FILE__);
}
Il faut changer le lien de la redirection pour que l’’utilisateur accède au chemin voulu juste après
l’authentification
Mahdi HAMZAOUI AU : 2020/2021
Atelier framework Web côté serveur Symfony 5
public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $providerKey)
{
if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
return new RedirectResponse($targetPath);
}
// For example : return new RedirectResponse($this->urlGenerator->generate('some_route'));
return new RedirectResponse($this->urlGenerator->generate('produit_index'));
}
6. Pour que l’interface d’authentification soit accessible sur [Link] :8000, changer la route
de la fonction login comme suit :
class SecurityController extends AbstractController
{
/**
* @Route("/", name="app_login")
*/
public function login(AuthenticationUtils $authenticationUtils): Response
{
……
}}
7. Ajouter le lien de déconnexion dans le navbar
<li class="nav-item">
<a class="nav-link" href="{{ path('app_logout') }}">
<i class="fa fa-sign-out" ariahidden="true" style="color:red"></i>
Logout</a>
</li>
8. Empêcher l’affichage du navbar dans la page d’authentification
{% if [Link] %}
<nav class="navbar navbar-expand-sm bg-dark navbar-dark">
…………………..
{% endif %}
Mahdi HAMZAOUI AU : 2020/2021