Подтвердите токен пользователя в Laravel - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть приложение ioni c 3, которое использует laravel в качестве бэкэнда. Для аутентификации я использую JWT, и все работает нормально, начиная с регистрации, входа в систему и размещения данных в приложении.

Проблема начинается, когда пользователь закрывает мобильное приложение и открывает его снова. Я хочу, чтобы приложение автоматически входило в систему. пользователь использует сохраненный токен в хранилище.

Приведенный ниже код предназначен для проверки того, есть ли у пользователя токен в хранилище, и если он существует, его необходимо отправить в laravel бэкэнд для проверки.

verifyToken() {
    return new Promise((resolve, reject) => {
      this.storage.get("token").then((value) => {
        let headers = new Headers();
        headers.append("Accept", "application/json");
        headers.append("Content-Type", "application/json");
        headers.append("Authorization", "Bearer " + value);
        this.http.post(ApiUrl + "/verifyToken", { headers: headers }).subscribe(
          (res) => {
            let data = res.json();
            console.log("Valid token results:", data);
            resolve(data);
          },
          (error: any) => {
            console.log("Token was invalid", error);
            reject(JSON.parse(error._body));
          }
        );
      });
    });
  }


На Laravel бэкенде у меня есть этот код для проверки

 public function verifyToken()
    {
        try {

            if (! $user = JWTAuth::parseToken()->authenticate()) {
                return response()->json(['success' => false, 'error' => 'User not found.',$e->getStatusCode()], 404);
            }

        } catch (Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {

            return response()->json(['success' => false, 'error' => 'Login Token expired.',$e->getStatusCode()], 401);

        } catch (Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {

            return response()->json(['success' => false, 'error' => 'Login Token invalid.',$e->getStatusCode()], 401);

        } catch (Tymon\JWTAuth\Exceptions\JWTException $e) {

            return response()->json(['success' => false, 'error' => 'Login Token not supplied.',$e->getStatusCode()], 401);

        }

        // the token is valid and we have found the user
        return response()->json(['success' => true, 'message' => 'Token is valid.'], 200);

    }

Когда я проверяю это через почтальона и предоставляю действительный токен пользователя, я получаю статус 200, но когда я делаю то же самое на В мобильном приложении я получаю сообщение об ошибке 500

"message": "The token could not be parsed from the request",
"exception": "Tymon\JWTAuth\Exceptions\JWTException",.

enter image description here

1 Ответ

0 голосов
/ 24 апреля 2020

Мне удалось заставить его работать, мне нужно было передать токен в теле при отправке моего сообщения в. c.

...