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

Laravel+Inertia环境下如何保护API路由实现认证访问

在Laravel+Inertia+Jetstream环境中保护API端点的方法

1. 用Sanctum会话中间件直接保护API

Jetstream本身依赖Laravel Sanctum实现认证,所以你可以直接用auth:sanctum中间件保护api.php里的路由,不需要额外折腾令牌流程。

修改你的API路由,添加中间件:

Route::middleware('auth:sanctum')->get('/companies/{user_id}', [Controller::class, 'index']);

2. 前端请求无需手动传令牌

你现在的fetch代码完全不用改——Inertia和Jetstream已经帮你处理好了会话认证:用户登录后,Laravel会设置会话Cookie,浏览器发起同域请求时会自动携带这个Cookie,Sanctum会自动验证会话有效性,只要用户处于登录状态就能访问该API端点。

3. 可选:校验请求的用户ID与当前登录用户一致

为了防止用户通过修改URL中的user_id访问他人数据,建议在控制器里加一层权限校验:

public function index($userId)
{
    // 如果请求的用户ID和当前登录用户ID不一致,返回403禁止访问
    if (auth()->id() !== (int)$userId) {
        abort(403, '无权访问该资源');
    }

    // 执行你的业务逻辑,比如查询该用户的公司数据
    return \App\Models\Company::where('user_id', $userId)->get();
}

内容的提问来源于stack exchange,提问作者Santiago Aguirre Perez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 23:57:02