Как разобрать пользователя из access_token?

В настоящее время у меня есть 2 сервера: 1 бэкэнд / API-сервер Laravel, 1 интерфейсный сервер, на котором работает Vue SPA.

Проблема, с которой я столкнулся, - это проблема аутентификации. Из моего приложения Vue я могу успешно войти в систему через аутентификацию API, используя предоставление пароля.

Запрос axios попадет в конечную точку аутентификации, которая:

$response = $http->post(env('APP_URL').'/oauth/token', [
    'form_params' => [
        'grant_type' => 'password',
        'client_id' => $client->id,
        'client_secret' => $client->secret,
        'username' => $credentials['email'],
        'password' => $credentials['password'],
        'scope' => '',
    ],
]);

Взамен я получаю токены, которые храню в localStorage. На более позднем этапе в моем приложении Vue я пытаюсь сделать еще один запрос API для этого вошедшего в систему пользователя, используя токены, которые я получил от предоставления пароля.

let config = {
    headers: {'Authorization': "Bearer " + state.tokens.access_token}
};

window.axios.post('/purchases', {
    form: state.form,
}, config)
    .then(function (response) {
        console.info(response);
    })
    .catch(function (error) {
        console.info(error.response);       
    }); 

Но я получаю ошибку 401

Error: "Unauthenticated."

Я предполагал, что промежуточное ПО auth:api будет анализировать токен доступа для пользователя, но, похоже, это не так.

Как я могу разобрать пользователя, что после срабатывания моей конечной точки /purchases я могу получить доступ к пользователю $request->user()?

Проверить заголовок запроса, правильно ли установлен токен?

Muhammad Nauman 15.04.2018 07:12

@chris вы vuex, если да. при каждом обновлении вашего хранилища уничтожайте вместо vuex сохраняйте его в localstorage, это не создает никаких проблем с безопасностью, но помните, что после входа в систему или закрытия браузера очистите эту вещь

bipin 15.04.2018 08:30

@MuhammadNauman Да, он настроен правильно.

Chris 16.04.2018 01:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
1
3
363
1

Ответы 1

привет Крис, есть 2 пути

способ 1

  router.beforeEach((to, from, next) => {


   axios.defaults.headers.common['authorization'] =store.state.userStore.authUser //this is globaly defind header
      //put your login over here
 }
});

в этом я устанавливаю заголовок axios при каждом запросе

способ 2

передайте свой токен в свой URL-адрес примерно так Предположим, вы URL-адрес типа localhost / laravel / public / api / anyname? access_token = '+ localstoragevalue

Спасибо! Не поймите меня неправильно, у меня нет проблем с передачей токена в заголовке. Проблема, с которой я столкнулся, заключается в том, чтобы получить от него пользователя.

Chris 16.04.2018 01:19

@Chris сохраняет токен, а также идентификатор пользователя в другую таблицу после входа в систему, т.е. код записи в контроллере входа, а другой метод заключается в создании дополнительного столбца в таблице пользователей (столбец токена), и этот процесс будет выполняться в обоих методах создания промежуточного программного обеспечения, чтобы проверить, какой пользователь его принадлежит, например: -find, где токен, это токен запроса, если он найден, заставьте его войти в систему, иначе перенаправить на домашнюю страницу, после этого все будет оставаться таким же, как обычный вход без токена

bipin 16.04.2018 08:43

Другие вопросы по теме