Laravel Passport: неправильный токен JSON-ответ - PullRequest
0 голосов
/ 25 февраля 2019

Я использую Laravel 5.7 + Passport 7.2.

Мой маршрут API выглядит следующим образом

// namespace "App\Http\Controllers\Admin"
Route::namespace('Admin\Api')->group(function () {

    // test route
    Route::get('test', function(){
        Return 'hello test';
    })->name('login');

    // unauthorized routes
    Route::post('authorizations', 'Auth\AuthorizationsController@store');

    // authorization routes
    Route::middleware(['auth:api'])->group(function () {

        // User controller
        Route::namespace('Users')->group(function () {
            // get user detail
            Route::get('user', 'UserController@me');
        });

        // Rbac controller
        Route::namespace('Rbac')->group(function () {
            // get tree menu list
            Route::get('menu/select', 'MenuController@select');
        });

    });
});

Когда я пытался запросить /api/user с неверным или пустым токеном,Я получил перенаправление.Однако в случае чистого API следует сообщать об ошибках, таких как 401: ошибка TOKEN, а не 302.

Как решить эту ситуацию?

1 Ответ

0 голосов
/ 25 февраля 2019

Если вы не предоставите действительный токен в защищенном маршруте, распознавание laravel как несанкционированного и если вы запросите его без определения Accept заголовка, он будет перенаправлен на страницу login , если вы определите заголовки Acceptчтобы быть json, он будет отвечать 401 статусом с Неаутентифицированным сообщением.

Таким образом, решение добавляет Accept:application/json в заголовки вашего запроса.

примерс аксиосом (javascript)

axios({
  method: "GET",
  url: "api/user",
  headers: { Accept: "application/json" }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...