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.
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