Ошибка аутентификации JWT: маркер не может быть проанализирован из запроса - PullRequest
0 голосов
/ 18 апреля 2019

В настоящее время я разрабатываю Laravel 5.8 с использованием JWT Auth, все работает также в Postman, но когда я пытался протестировать в Browser, я получил много ошибок, и одна за другой была исправлена. Теперь я получаю еще одну ошибку при попытке передать JSON Web Token с помощью запроса. Маркер не предоставлен правильно. После того, как я войду в систему в:

public function signin(Request $request)
  {
    $this->validate($request, [
      'username' => 'required',
      'password' => 'required'
    ]);
    // grab credentials from the request
    $credentials = $request->only('username', 'password');
    try {

        // attempt to verify the credentials and create a token for the user
        if (! $token = JWTAuth::attempt($credentials)) {
            return response()->json([
              'error' => 'Invalid Credentials, username and password dismatches. Or username may not registered.',
              'status' => '401'
            ], 401);
        }
    } catch (JWTException $e) {
        // something went wrong whilst attempting to encode the token
        return response()->json(['error' => 'could_not_create_token'], 500);
    }
    return response()->json([
      'token'   => $token
    ]);
  }

Токен успешно сгенерирован. Но когда мне нужен токен другому контроллеру, токен сгенерирован неудачно, один из примеров в этом методе:

  public function index(Request $request)
  {
    // this will set the token on the object
    JWTAuth::parseToken();
    // and you can continue to chain methods
    $user = JWTAuth::parseToken()->authenticate();
    $token = JWTAuth::getToken();
    die($token);
    try {
        if (! $user = JWTAuth::parseToken()->authenticate()) {
            return response()->json(['user_not_found'], 404);
        }
    } catch (Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
        return response()->json(['token_expired'], $e->getStatusCode());
    } catch (Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {
        return response()->json(['token_invalid'], $e->getStatusCode());
    } catch (Tymon\JWTAuth\Exceptions\JWTException $e) {
        return response()->json(['token_absent'], $e->getStatusCode());
    }

Каждый раз, когда я хотел бы JWTAuth::parseToken();, я получал эту ошибку:

Не удалось проанализировать токен из запроса

Так почему это случилось? И что я должен делать? Поскольку в методе signin токен успешно сгенерирован, но в index я не могу получить доступ к токену. Спасибо за ваше внимание.

1 Ответ

0 голосов
/ 18 апреля 2019

Токен необходимо передавать через Заголовки в каждом запросе API Header Name: Authorization Expected Value: Bearer --token-- (без - ofcourse)

...