Laravel Паспорт VueJS Потребление собственного API 401 - PullRequest
0 голосов
/ 25 мая 2020

Есть большая вероятность, что я здесь что-то не так. Это то, чего я пытаюсь достичь и что у меня уже есть.

ЧТО ПРОИСХОДИТ

Я пытаюсь использовать свой собственный Laravel (7) API из моего VueJs составная часть. Для этого, я полагаю, мне придется использовать Laravel Passport.

Я вхожу в приложение через веб-форму (стандартная Laravel встроенная форма входа). Когда я go перехожу на определенную страницу после входа в систему, я вижу, что мой vueJS компонент загружается правильно. Он делает несколько вызовов API к разным конечным точкам для сбора некоторых данных. Конечные точки, которые я оставил без авторизации (для тестирования), в порядке. Те, что в:

Route::middleware(['auth:api'])->group(function() {
    // more routes...
    Route::get('/secret-endpoint/', 'Api\MyController@view');
});

, возвращаются как 401.

Теперь я посмотрел на Laravel Паспортная документация и я успешно установил паспорт в свою систему.

Я думаю, что это правильно, потому что, когда я попадаю в конечную точку, предоставленную паспортом http://localhost:8080/oauth/token с учетными данными пользователя, которые существуют в моей базе данных, я делаю это получить токен.

Я также могу использовать этот токен и передать его в Authorization Bearer в Postman на другую конечную точку, которая защищена промежуточным программным обеспечением 'auth:api', и если токен верен, я получаю доступ, а если нет, нет доступа.

Пока все хорошо.

В документации по паспорту упоминается, что я должен добавить это:

'web' => [
    // Other middleware...
    \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],

В моем app/Http/Kernel.php - это тоже сделано . Это должно заставить Laravel прикрепить laravel_token cook ie к исходящим запросам.

Действительно, я вижу это в запросе:

enter image description here

Однако запрос возвращается как 401.

Подводя итог:

  • паспорт установлен правильно, так как я обычно могу использовать токены
  • vue компоненты работают нормально
  • к запросу прилагается larvel_token
  • Я все время получаю 401 response

  • Я вхожу в приложение с обычной формой входа

  • , затем я go на страницу, где есть мой vuejs компонент
  • VueJS делает запрос и не работает (401)

ДРУГАЯ ИНФОРМАЦИЯ

  • PHP 7,4
  • LARAVEL 7
  • DOCKER
  • APACHE

Я потратил на это второй день и не совсем уверен, что не так и где начать искать.

Я ПРАВ?

Если я правильно понимаю, когда прикрепляю это * 1 083 * для запроса, который идет по маршруту с промежуточным программным обеспечением auth:api, он должен быть автоматически выбран и разрешен до go через?

Если нет, что должно произойти?

Я пропал шаг?

Может я все неправильно понял?

Может надо что-то добавить в конфиг? (не считая базовых c настроек, как это сделано)

PS

  • Я просмотрел все, что смог найти в StackOverflow, но у меня ничего не сработало (может быть хотя моя вина). Поэтому я провел много исследований, прежде чем спрашивать.

  • Я не регистрировал Vue компонентов из паспорта, так как я не заинтересован в управлении клиентами в моем приложении. Я просто хочу защитить свой API.

EDIT:

Я думаю, что одним из возможных решений может быть просто создание передней и задней части приложение полностью отдельно. Судя по тому, что делают люди, это solid решение.

...