Gestion utilisateurs

Par tms34, il y a 6 ans


Bonjour,

Je suit actuellement le cours d'introduction a Symfony de Grafikart. J'en suit a la creation de la page login pour les admin. La page est crée e ainsi que l'user et la connection marche mais lorsque je suis connecté dans la debug bar n'apparait pas le nom de mon user mais "n/a". Je suis pourtant bien en "Authenticated : Yes" donc je ne comprend pas. Du coup le "if app.user" ne fonctionne pas et j'ai l'impression que cela viens de la.

Voici mon security.yaml

security: # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers providers: from_database: entity: class: App\Entity\User property: username firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: anonymous: true logout: path: /logout target: / # activate different ways to authenticate # https://symfony.com/doc/current/security.html#firewalls-authentication form_login: check_path: login # https://symfony.com/doc/current/security/impersonating_user.html # switch_user: true # Easy way to control access for large sections of your site # Note: Only the *first* access control that matches will be used access_control: - { path: ^/admin, roles: ROLE_ADMIN } encoders: App\Entity\User: algorithm: auto cost: 12

Ainsi que le controller :

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Security\Http\Authentication\AuthenticationUtils; Class SecurityController extends AbstractController{ /** * @Route("/login", name="login" ) * @return Response */ public function login(AuthenticationUtils $authenticationUtils){ $lastUsername = $authenticationUtils->getLastUsername(); $error = $authenticationUtils->getLastAuthenticationError(); return $this->render('security/login.html.twig', [ 'last_username' => $lastUsername, 'error' => $error, 'current_menu' => 'login' ]); } }

Et enfin le template :

{% extends 'base.html.twig' %} {% block title %}Se connecter{% endblock %} {% block body %} <div class="container mt-4"> {% if error %} <div class="alert alert-danger"> {{ error.messageKey | trans(error.messageData, 'security') }} </div> {% endif %} <form action=" {{ path('login') }}" method="post"> <div class="form-group"> <label for="username">Login</label> <input type="text" id="username" name="_username" class="form-control" value="{{ last_username }}"> </div> <div class="form-group"> <label for="password">Mot de passe</label> <input type="password" id="password" name="_password" class="form-control"> </div> <button type="submit" class="btn btn-primary">Se connecter</button> </form> </div> {% endblock %}

Merci a vous j'avoue que j'ai recherché si d'autres avait eu ce soucis mais n'ai rien trouvé. Si vous avez besoin de plus d'informations sur mon code ou sur le symfony profiler n'hesitez pas a demander.

1 réponse

aka-aka, il y a 6 ans

Bonjour,
est-ce que tu as un "authentificateur Guard" dans App\Security ?

si oui ajoute a partir de la ligne "guard:" dans ton Security.yaml

# config/packages/security.yaml security: # ... firewalls: main: # ... guard: authenticators: - App\Security\LoginFormAuthenticator

Pour plus d'info regarde la doc de symfony https://symfony.com/doc/current/security/form_login_setup.html