You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何将Passport生成的Token作为Authorization头传递并校验

Laravel Passport 强制API需携带Token访问的实现

要实现无Token时返回错误、必须传入Token才能访问API的功能,你需要从路由中间件、控制器逻辑优化两个方面处理:

1. 为路由添加Passport验证中间件

Laravel Passport提供了auth:api中间件,给目标路由加上这个中间件,就能自动验证请求头里的Authorization Token。

修改你的路由定义(以routes/api.php为例):

use App\Http\Controllers\UserController;

Route::get('/users/{user}', [UserController::class, 'getalluser'])->middleware('auth:api');

当请求没有携带有效Token时,框架会自动返回401 Unauthorized响应。

2. 优化控制器方法逻辑

你当前的控制器方法存在逻辑冗余:参数User $user是路由模型绑定,框架已经自动根据路由参数{user}查询出对应的User实例,不需要再手动执行User::where('id', $user)->first()。

修正后的getalluser方法:

public function getalluser(User $user)
{
    return response()->json([
        'user' => $user,
    ]);    
}

3. 自定义无Token时的错误响应(可选)

如果需要自定义无Token时的返回格式,修改App\Exceptions\Handler.php中的unauthenticated方法:

use Illuminate\Auth\AuthenticationException;

protected function unauthenticated($request, AuthenticationException $exception)
{
    if ($request->expectsJson()) {
        return response()->json(['message' => '必须携带有效Authorization Token才能访问'], 401);
    }

    return redirect()->guest($exception->redirectTo() ?? route('login'));
}

配置完成后,当请求未携带Token或Token无效时,API会返回对应的错误信息和401状态码。

内容的提问来源于stack exchange,提问作者vivek kn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 20:35:29