Как передать идентификатор пользователя вместе с токенами JWT в локальное хранилище - PullRequest
0 голосов
/ 20 апреля 2019

В настоящее время я работаю с Laravel и Vue framework, и я использую JWT auth для аутентификации.Проблема в том, что я хочу передать user_id вместе с токеном в локальное хранилище , чтобы, если мне нужно где-то его использовать, я мог легко получить к нему доступ window.localstorage.getItem('user_id').Я не могу этого сделать.Я новичок в этих технологиях. Пожалуйста, помогите

Я попытался передать токен, и он прошел успешно, но по какой-то причине я не могу передать идентификатор.

мой код авторизации JWT:

public function login(Request $request)
{

    $credentials = $request->json()->all();

    try{
        if (!$token = JWTAuth::attempt($credentials)){
            return response()->json(['error'=>'invalid_credentials'], 400);
        }
    }catch(JWTException $e) {
        return response()->json(['error' => 'could_not_create_token'], 500); // something went wrong whilst attempting to encode the token
    }

    return response()->json(compact('token'));

}


public function getAuthenticatedUser()
{
    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());
    }

    return $user;
    // \Log::info('user id found'.$userId);

}

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

Заранее спасибо.

1 Ответ

2 голосов
/ 20 апреля 2019

Создайте новую функцию в вашем контроллере под функцией входа в систему.

public function user_details(Request $request){

    try {
        $this->jsondata = JWTAuth::authenticate($request->token);
        $this->message = 'User details fetched.';
        $this->status = true;
    } catch (JWTException $e) {
        $this->status = false;
        $this->message = 'Error';
    }

    return response()->json([
        'status'    => $this->status,
        'data'      => $this->jsondata,
        'message'   => $this->message
    ]);
}

Не сохраняйте user_id в локальном хранилище браузера, так как это будет серьезной проблемой безопасности. Используйте этот веб-сервис для получения любых данных пользователя через сгенерированный токен.

...