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

如何为API和Web分别配置Passport API,实现不同未认证响应逻辑

解决方案:用Passport的API认证守卫区分Web与API路由

不用修改已有的Web路由代码,我们只需要针对API路由单独配置Passport提供的auth:api中间件,它会自动处理未认证请求并返回JSON响应,完全不会干扰Web路由原有的重定向逻辑。

步骤1:确保Passport已正确配置

如果你还没完成Passport的基础安装,先执行以下命令(已安装可跳过):

composer require laravel/passport
php artisan migrate
php artisan passport:install

接着在app/Providers/AuthServiceProvider.php中注册Passport路由:

use Laravel\Passport\Passport;

public function boot()
{
    $this->registerPolicies();

    Passport::routes();
    // 可选:设置令牌过期时间,比如15天
    // Passport::tokensExpireIn(now()->addDays(15));
}

最后在config/auth.php里,把API守卫的驱动改为passport:

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'passport', // 这里替换为passport
        'provider' => 'users',
        'hash' => false,
    ],
],

步骤2:给API路由应用auth:api中间件

打开routes/api.php,把你的API路由包裹在使用auth:api中间件的路由组里,示例如下:

use Illuminate\Http\Request;

Route::middleware('auth:api')->group(function () {
    // 示例:获取当前认证用户信息
    Route::get('/user', function (Request $request) {
        return $request->user();
    });

    // 在这里添加你的其他API路由
    // 比如:Route::get('/posts', [PostController::class, 'index']);
});

为什么这样有效?

  • Web路由继续使用原来的auth中间件(对应web守卫),未认证时依旧会重定向到登录页,完全保留原有逻辑。
  • API路由使用auth:api中间件(对应api守卫,驱动为Passport),未认证时会自动返回JSON格式的401响应,默认格式如下:
{
    "message": "Unauthenticated."
}

自定义未认证响应(可选)

如果想替换默认的JSON内容,可以修改异常处理器:
打开app/Exceptions/Handler.php,在render方法中添加针对AuthenticationException的处理:

use Illuminate\Auth\AuthenticationException;

public function render($request, Throwable $exception)
{
    if ($exception instanceof AuthenticationException && $request->expectsJson()) {
        return response()->json([
            'status' => 'error',
            'message' => '您需要先登录才能访问该API接口',
            'code' => 401
        ], 401);
    }

    return parent::render($request, $exception);
}

这样所有未认证的API请求都会返回你自定义的JSON响应,Web路由的重定向逻辑不受任何影响。

内容的提问来源于stack exchange,提问作者Rohit Dalal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:57:59