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" }
});
我正在使用 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" }
});