我正在使用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。
如何解决这种情况?
如果您未在受保护路由中提供有效令牌laravel识别为未授权,并且如果您在没有定义Accept
标头的情况下请求它,则它将重定向到登录页面,如果您将Accept
标头定义为json,它将使用Unauthenticated消息响应401状态。
因此,它在您的请求标头中添加Accept:application/json
的解决方案。
axios(javascript)的例子
axios({
method: "GET",
url: "api/user",
headers: { Accept: "application/json" }
});