1 pièce(s) jointe(s)
Security : authentification impossible
Bonjour,
Je suis en train de tester le fonctionnement de security et je rencontre un problème :malgré l'encodage du nom d'utilisateur et le mot de passe que je pense avoir correctement configurés, j'ai toujours le message d'erreur suivant :
Citation:
Identifiants invalides.
Voici ma configuration dans secutity.yaml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
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
# http_basic: true
# https://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate
form_login:
check_path: login
# https://symfony.com/doc/current/security/form_login_setup.html
# 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 }
# - { path: ^/profile, roles: ROLE_USER }
encoders:
App\Entity\User:
algorithm: bcrypt
cost: 12 |
Mon SecurityController.php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
<?php
namespace App\Controller;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
class SecurityController extends AbstractController
{
/**
* @Route("/login", name="login")
*/
public function login(AuthenticationUtils $authenticationUtils)
{
$error = $authenticationUtils->getLastAuthenticationError();
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render('security/login.html.twig', ['last_username' => $lastUsername,
'error' => $error,
]
)
;
}
} |
Et mon template :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
{% extends 'base.html.twig' %}
{% block title 'Se connecter' %}
{% 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">Nom d'utilisateur</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 %} |
Pour créer un utilisateur, j'ai écrit cette fixture que j'ai ensuite exécutée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
<?php
namespace App\DataFixtures;
use App\Entity\User;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
class UserFixtures extends Fixture
{
/**
* @var UserPasswordEncoderInterface
*/
private $encoder;
public function __construct(UserPasswordEncoderInterface $encoder)
{
$this->encoder = $encoder;
}
public function load(ObjectManager $manager)
{
$user = new User();
$user->setUsername('demo');
$user->setPassword($this->encoder->encodePassword($user, 'demo'));
$manager->persist($user);
$manager->flush();
}
} |
Dans ma table user, je trouve bien cet enregistrement :
Pièce jointe 461624
Je ne comprends pas d'où provient l'erreur. Quelqu'un aurait une piste?
Merci d'avance pour votre aide.