Laravel 护照:令牌错误 JSON 响应

Laravel Passport: Wrong token JSON response

我正在使用 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 error,不是302。

如何解决这种情况?

如果您没有在受保护的路由中提供有效令牌 laravel 识别为未授权,如果您在没有定义 Accept header 的情况下请求它,它将重定向到 login 页面,如果你定义 Accept headers 为 json 它将响应 401 状态 未验证 消息。

因此它在您的请求 headers.

中添加 Accept:application/json 的解决方案

axios 示例 (javascript)

axios({
  method: "GET",
  url: "api/user",
  headers: { Accept: "application/json" }
});