
用 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