Laravel Passport: auth: api ведет себя как auth: web

Я пытаюсь реализовать passport в моем приложении для проверки подлинности api звонки. Я сделал настройку, как указано в официальной документации.
У меня есть это в моей охране авторских прав:

'api' => [
'driver' => 'passport',
'provider' => 'users',
],

И это по моему AuthServiceProvider's boot() метод:

Passport::routes();

И это route Я пытаюсь получить доступ к:

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

Route::group(['namespace' => 'Api', 'middleware' => 'auth:api'], function () {
// Login Controller
Route::get('/getclc', 'PreController@getClc');
});

Я отправляю header в запросе вот так:

Authorization:Bearer $accessToken

Мой вопрос: 1. Когда запрашивается защищенный маршрут, он отправляет меня на страницу входа, но я хочу, чтобы он вернул 401. Как я могу это сделать?

мой laravel версия 5.4.33.

3

Решение

Когда аутентификация не проходит, Laravel выдает AuthenticationException исключение. Это исключение обрабатывается вашим обработчиком исключений Laravel и в конечном итоге вызывает unauthenticated() метод в вашем app/Exceptions/Handler.php файл.

Из этого метода видно, что если ваш запрос ожидает ответ json, вы получите ответ 401 Неаутентифицированный. Однако, если вы не ожидаете ответа json, он просто перенаправляет на маршрут с именем «login». Это, очевидно, потерпит неудачу, если у вас нет маршрута с именем «логин».

Ваш запрос «ожидает Json» при отправке заголовка «X-Requested-With: XMLHttpRequest» или заголовка «Accept: application / json». В противном случае это считается нормальным веб-запросом.

Если вы хотите изменить способ обработки вашего приложения пользователями, не прошедшими проверку подлинности, unauthenticated() метод, который нужно изменить.

5

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

Добавьте этот код в заголовки почтальона.

key           Value
Accept        application/json

Спасибо

0

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