JWT Web令牌不会回馈用户信息

时间:2017-09-08 11:05:38

标签: symfony jwt lexikjwtauthbundle

我的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;
}

但没有什么。我不明白为什么..:/

如果有人愿意提供给我的话

0 个答案:

没有答案