1

API に問題があります。ログイン後、トークンを取得しましたが、残念ながらこのトークンでユーザーの情報を読み取ることができません。

トークンを持つ私のコード(それは機能します):

/**
 * @Rest\View()
 * @Rest\Post("/api/createToken")
 */
 public function createTokenAction(Request $request)
 {
     // reception payload
     $username = $request->request->get('email');
     $password = $request->request->get('password');

     $user = $this->getDoctrine()
         ->getRepository('ApplicationSonataUserBundle:User')
         ->findOneBy(['email' => $username]);

     // check user
     if (!$user) {
        $response = new JsonResponse('User not found');
        $response->setStatusCode(Response::HTTP_NOT_FOUND);
        return $response;
     }

     //check password
    $encoder_service = $this->get('security.encoder_factory');
    $encoder = $encoder_service->getEncoder($user);
    $valid = $encoder->isPasswordValid($user->getPassword(), $password, $user->getSalt());
    if (!$valid) {
        $response = new JsonResponse('User Password is invalid');
        $response->setStatusCode(Response::HTTP_NOT_FOUND);
        return $response;
    }


     // store data inside my token

     $token = $this->get('lexik_jwt_authentication.encoder')
         ->encode([
             'id' => $user->getId(),
             'email' => $user->getEmail(),
             'exp' => time() + 3600 // 1 hour expiration
     ]);

     $view = View::create($token);
     $view->setFormat('json');

     return $view;  
 }

次に、このコードを使用してトークンの情報を読み取ろうとします。

/**
 * @Rest\View()
 * @Rest\Get("/api/user")
 */
public function getUsersAction(Request $request)
{
    $response = $this->get('lexik_jwt_authentication.jwt_manager')->create($this->getUser());
    $view = View::create($response);
    $view->setFormat('json');

    return $view;
}

しかし、何もしません..理由がわかりません.. :/

誰かが私に提供するトラックを持っている場合は、お願いします

4

0 に答える 0