用 Passport
做的 API
认证,用 Postman 测试 API
时,在没有获取 token
的情况下访问接口,会自动跳转到登录界面,这显然不是我想要的,虽然可以设置 Headers
解决,但是我希望即使在浏览器端测试 API
,也是返回 json
格式的错误信息,而不是跳转到登录界面。
下面是解决办法:
1、新建中间件 JsonResponse
:
php artisan make:middleware JsonResponse
2、编辑 app/Http/Middleware/JsonResponse
文件:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class JsonMiddleware
{
public function handle(Request $request, Closure $next)
{
if ($request->is('api/*')){
$request->headers->set('Accept', 'application/json');
}
return $next($request);
}
}
3、把 JsonResponse
添加到 Kernel
中,编辑 app/Http/Kernel
:
protected $middleware = [
......
//Application Middleware
\App\Http\Middleware\JsonResponse::class,
];
再次访问接口,会有如下响应:
{
"message": "Unauthenticated."
}
————————————————
原文链接:https://blog.csdn.net/h20101988/java/article/details/85846430