Я пытаюсь реализовать 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.
Когда аутентификация не проходит, Laravel выдает AuthenticationException
исключение. Это исключение обрабатывается вашим обработчиком исключений Laravel и в конечном итоге вызывает unauthenticated()
метод в вашем app/Exceptions/Handler.php
файл.
Из этого метода видно, что если ваш запрос ожидает ответ json, вы получите ответ 401 Неаутентифицированный. Однако, если вы не ожидаете ответа json, он просто перенаправляет на маршрут с именем «login». Это, очевидно, потерпит неудачу, если у вас нет маршрута с именем «логин».
Ваш запрос «ожидает Json» при отправке заголовка «X-Requested-With: XMLHttpRequest» или заголовка «Accept: application / json». В противном случае это считается нормальным веб-запросом.
Если вы хотите изменить способ обработки вашего приложения пользователями, не прошедшими проверку подлинности, unauthenticated()
метод, который нужно изменить.
Добавьте этот код в заголовки почтальона.
key Value
Accept application/json
Спасибо