Bonjour, J’ai un petit problème similaire à celui-ci mais la solution proposée ne corresponds pas à mon problème.
Je suis sur la partie sécurisation de l’api du tutoriel de création d’une API du site .
Actuellement le résultat de la réponse est vide que ce soit quand l’authentification échoue ou réussi. Plus exactement:
Voici mon contrôleur pour la route auth-token:
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 43 | /** * @Rest\View(statusCode=Response::HTTP_CREATED, serializerGroups={"auth-token"}) * @Rest\Post("/auth-tokens") * @param Request $request * @return AuthToken|\FOS\RestBundle\View\View */ public function postAuthTokensAction(Request $request) { $credentials = new Credentials(); $form = $this->createForm(CredentialsType::class, $credentials); $form->submit($request->request->all()); if (!$form->isValid()) { return \FOS\RestBundle\View\View::create(['message' => 'Invalid form'], Response::HTTP_BAD_REQUEST); } $em = $this->get('doctrine.orm.entity_manager'); $user = $em->getRepository('AppBundle:User') ->findOneByEmail($credentials->getEmail()); if (!$user) { // L'utilisateur n'existe pas return $this->invalidCredentials(); } $encoder = $this->get('security.password_encoder'); $isPasswordValid = $encoder->isPasswordValid($user, $credentials->getPassword()); if (!$isPasswordValid) { // Le mot de passe n'est pas correct return $this->invalidCredentials(); } $authToken = new AuthToken(); $authToken->setValue(base64_encode(random_bytes(50))); $authToken->setCreatedAt(new \DateTime('now')); $authToken->setUser($user); $em->persist($authToken); $em->flush(); return $authToken; } |
Je me suis demandé si cela ne pouvait pas venir de la configuration du sérialiseur dont voici la configuration dans le bon chemin:
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 | AppBundle\Entity\User: attributes: id: groups: ['user', 'preference', 'auth-token'] firstname: groups: ['user', 'preference', 'auth-token'] lastname: groups: ['user', 'preference', 'auth-token'] email: groups: ['user', 'preference', 'auth-token'] preferences: groups: ['user'] AppBundle\Entity\AuthToken: attributes: id: groups: ['auth-token'] value: groups: ['auth-token'] createdAt: groups: ['auth-token'] user: groups: ['auth-token'] ` |
Ma version de symfony est la v3.3.5 et j’ai bien vidé le cache.
Une idée ? Je ne comprends même pas pourquoi je n’ai pas le message définis dans le contrôleur en cas d’échec. L’idéal pour moi serait d’avoir ce message car en cas d’échec je pourrais l’afficher au client.
Mon front est en angular et j’utilise le template ng2-admin, je ne sais pas si cela peut aider.
Merci pour votre aide.
Thibault.