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

如何使用Laravel Sanctum无跳转校验用户认证状态且不触发未认证提示

解决方案

你的需求可以直接通过Laravel Sanctum原生能力实现,无需手动校验令牌和有效期,两种常用实现方式如下:

方案1:使用可选认证中间件(最推荐)

  • 路由注册时使用带?后缀的auth:sanctum可选中间件,该中间件只会尝试解析并认证用户身份,不会在未认证时抛出异常、跳转或返回unauthenticated错误
  • 示例路由代码:
Route::get('/your-interface-path', [YourApiController::class, 'yourMethod'])->middleware('auth:sanctum?');
  • 业务代码中直接判断认证状态即可:
use Illuminate\Support\Facades\Auth;

public function yourMethod()
{
    if (Auth::guard('sanctum')->check()) {
        // 已认证用户逻辑:可获取当前登录用户信息
        $user = Auth::guard('sanctum')->user();
    } else {
        // 未认证用户逻辑
    }
}

方案2:直接在业务代码中校验

如果你不想给路由绑定中间件,也可以直接在任意位置调用Sanctum的认证校验逻辑,底层会自动完成令牌解析、有效期校验、用户匹配等全流程操作:

// 直接调用即可,无需额外处理令牌
$isAuthenticated = Auth::guard('sanctum')->check();

注意事项

  • 显式指定sanctum guard可以避免和项目中默认的web guard等其他认证体系混淆,保证判断准确
  • 上述两种方案都默认遵循你在Sanctum配置中定义的令牌有效期、加密规则等配置,无需额外适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:51:03