Titre: Authentifier un utilisateur avec Synfomy [RÉSOLU] Posté par: le_gremz le 03 Février 2015 à 16:13:13 Bon, j'ai déjà posé la question sur IRC donc les "RTFM", les "fais le c'est simple" , les "arrête de pomper des code fais le toi-même" j'en veut pas ici.
Pour info, j'ai lu les docs FR et EN du book de Symfony ainsi que le Cookbook. J'ai essayé d'utiliser les codes d'exemples mais ils ne "marche pas" (c'est peut-être moi qui les utilise mal...) bref. J'ai une zone protégé par un firewall qui si l'utilisateur n'est pas loggué il est redirigé vers /login. Code: #app/config/security.yml Comme on peut le voir dans le fichier security.yml j'utilise ce qu'on appel un Entity Provider pour charger mes utilisateurs depuis ma base de données. 1er problème [Résolu]: Lors de l'essai de connexion le mot de passe n'est pas valide et donc j'ai une erreur "Invalid Credentials." [Solution] : Le champ de la base de données n'était pas assez grand et le mot de passe été tronqué. 2eme probleme : L'authentification semble passer et l'erreur "Invalide credential" a disparue. Cependant une exception proc. La BDD à déjà été interrogé. Citation Catchable Fatal Error: Argument 4 passed to Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken::__construct() must be of the type array, string given, called in /var/www/html/projetStage/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Provider/UserAuthenticationProvider.php on line 96 and defined 500 Internal Server Error - ContextErrorException Je me suis penché sur ce problème en consultant l'API de symfony et il semble que ce soit un problème de role... Citation at ErrorHandler ->handleError ('4096', 'Argument 4 passed to Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken::__construct() must be of the type array, string given, called in /var/www/html/projetStage/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Provider/UserAuthenticationProvider.php on line 96 and defined', '/var/www/html/projetStage/vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Token/UsernamePasswordToken.php', '36', array('user' => object(Users), 'credentials' => 'admin', 'providerKey' => 'default')) in vendor/symfony/symfony/src/Symfony/Component/Security/Core/Authentication/Token/UsernamePasswordToken.php at line 36 - * * @throws \InvalidArgumentException */ public function __construct($user, $credentials, $providerKey, array $roles = array()) { parent::__construct($roles); Donc , oui j'ai lu les docs, oui j'ai cherché dans l'API pour essayer de voir pourquoi ça ne marche pas, j'ai cherché par moi même, ça fais 5 jours que je galère dessus ! Je demande juste qu'on me dise pourquoi cette erreur ce produit pour que je puisse la comprendre et la résoudre. Merci d'avance à ceux qui auront la gentillesse de m'aider (pas comme certains...) [EDIT] Merci à K@ss d'avoir pris 5 minutes pour m'expliquer d'où venais le problème.Je poste donc la solution si ça intéresse des gens. Symfony veut que vous lui passiez un tableau de rôles d'utilisateur quand vous utilisé le système d'authentification d'utilisateur. Code: <?php Dans la fonction getRoles, il faut forcer la définition en array, return array($this->roles);. Tout con au final, mais un peu déroutant quand ç'est une exception qui sort des tréfonds de symfony. Titre: Re : Authentifier un utilisateur avec Synfomy [RÉSOLU] Posté par: titoum76 le 04 Février 2015 à 21:10:46 C'est simple, arrête de pomper des code et fais le toi-même.
Titre: Re : Authentifier un utilisateur avec Synfomy [RÉSOLU] Posté par: pixis le 04 Février 2015 à 23:04:38 Merci pour la solution. Cependant, l'erreur était quand même super explicite :
Citation must be of the type array, string given ;) A bon entendeur ... |