Catchable Fatal Error: Argument passé à 4 UsernamePasswordToken::__construct() doit être un tableau, null donné
J'obtiens l'erreur suivante lors de la connexion dans mon application Symfony (avec le bon nom d'utilisateur et mot de passe):
ContextErrorException: Catchable Fatal Error: Argument 4 passé à Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken::__construct() doit être un tableau, null donné, appelé dans D:\xampp\htdocs\essweb\vendor\symfony\symfony\src\Symfony\Component\Security\Core\Authentication\Provider\UserAuthenticationProvider.php sur la ligne 96 et définis dans D:\xampp\htdocs\essweb\vendor\symfony\symfony\src\Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken.php la ligne 36
De sécurité.yml
firewalls:
admin_area:
pattern: ^/
anonymous: ~
form_login:
login_path: /
check_path: /login_check
default_target_path: /user
failure_path: /
#username_parameter: username
#password_parameter: password
remember_me: true
remember_me:
key: "%secret%"
lifetime: 31536000
path: /
domain: ~
always_remember_me: true
logout:
path: /logout
target: /
Mise à jour:
Formulaire de connexion:
<form class="form-signin form-group" action="{{ path('login_check') }}" method="post">
Username: <input type="text" class="form-control" name="_username" placeholder="Username" value="{{ last_username }}" required="required">
Password: <input type="text" class="form-control" name="_password" placeholder="" value="{{ last_username }}" required="required">
<button class="btn btn-sm btn-primary btn-block" type="submit">Sign in</button>
- Nous avons besoin de voir votre formulaire et de savoir si vous avez eu prolonger la UserBundle' securityController .
- Je n'ai pas utilisé de l'utilisateur bundle. C'est juste un simple formulaire de connexion
Vous devez vous connecter pour publier un commentaire.
Fondamentalement, ce que le message d'erreur est:
Le 4ème argument pour
UsernamePasswordToken::__construct()
devrait être un tableau, mais c'estnull
. Il a été appelé enUserAuthenticationProvider
à la ligne 96.Si vous jetez un oeil à ce code, vous verrez que le 4ème argument pour
UsernamePasswordToken::__construct()
est$roles
. De sorte que devrait être un tableau, mais il senull
à la place.Je devine que vous avez rédigé votre propre entité Utilisateur, et que le
getRoles()
méthode de l'utilisateur de votre entité est de retournull
au lieu d'un tableau de rôles. Donc il suffit de changer la méthode à quelque chose comme ceci:Bien sûr, le code réel peut varier (vous pourriez vouloir stocker les rôles d'utilisateur dans la base de données), aussi longtemps que
getRoles()
retourne un tableau de chaînes de caractères ou Rôle objets.- Je corriger cette erreur afin de retourner les rôles:
Cette erreur est contagieux parce que les rôles bien reçu, la valeur est null cependant, vous devez donner un éventail de rôles, donc, pour le résoudre il suffit de retourner les rôles propoerty :