我正在使用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。
如何解决这种情况?
答案 0 :(得分:0)
如果您在受保护的路线中未提供有效令牌,laravel会被识别为未经授权,并且如果您在未定义Accept
标头的情况下请求它,则将您重定向到登录页,如果您定义了{ {1}}标头为json,它将通过未经身份验证消息响应 401 状态。
因此解决方案将Accept
添加到您的请求标头中。
带有axios(javascript)的示例
Accept:application/json