Laravel Passport & quot; auth: api & quot; промежуточное программное обеспечение действует как & quot; web, auth & quot; промежуточный слой

Я настроил Laravel Passport пакет для Laravel 5.3, как описано в официальной документации (https://laravel.com/docs/5.3/passport#introduction).

Я хочу, чтобы API использовалось мобильным приложением, поэтому я пытаюсь реализовать Пароль Предоставить токены. Я создал клиента предоставления пароля и процесс запроса токена …

$response = $http->post('http://my-app.com/oauth/token', [
'form_params' => [
'grant_type' => 'password',
'client_id' => 'client-id',
'client_secret' => 'client-secret',
'username' => '[email protected]',
'password' => 'my-password',
'scope' => '',
],
]);

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

С одной стороны,

php artisan route:list

Перечисляет правильное промежуточное ПО для URI API / пользователя: апи, Auth: апи

И драйвер для API защиты правильно установлен паспорт в config / auth.php.
Подводя итог, каждый шаг процесса установки был сделан (https://laravel.com/docs/5.3/passport#installation).

По умолчанию содержимое api.php:

Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:api');

Проблема возникает, когда я получаю доступ к http://my-app.com/api/user, потому что кажется, что он аутентифицирует запрос, используя промежуточное ПО «web», а не «api» …
Когда я получаю доступ, меня перенаправляют на / login (форма входа), если пользователь не вошел в систему, и на / home, если это было …

Любая помощь могла бы быть полезна.
Заранее спасибо.

3

Решение

Решено! Просто для справки, решение:

Я отправлял запрос http://my-app.com/api/user с заголовком HTTP неправильно. Я отправлял:

Type: Authorization - Content: Bearer: $accessToken

…и правильный путь был:

Type: Authorization - Content: Bearer $accessToken (without colon)

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

7

Другие решения

Правильное решение удаляет redirectTo() из этого файла Аутентификация промежуточного программного обеспечения в app/http/middleware/Authenticate.php

0

По вопросам рекламы [email protected]