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

Laravel Sanctum可选登录用户路由配置问题求助

解决方案

要实现登录用户返回user、访客返回Guest的需求,你需要调整路由中间件和控制器的验证逻辑:

1. 修改路由配置

移除路由组上的auth:sanctum中间件,让该路由对所有请求开放:

Route::post('/profile', [TestController::class, 'test']);

2. 调整控制器验证逻辑

在控制器方法中,指定使用sanctum guard来检查用户登录状态,而非默认的web guard:

use Illuminate\Support\Facades\Auth;

public function test()
{
    if (Auth::guard('sanctum')->check()) {
        return 'user';
    } else {
        return 'Guest';
    }
}

原因说明

  • 原auth:sanctum中间件是强制验证机制,只要请求没有携带有效Sanctum令牌,就会直接返回401未授权,无法进入控制器逻辑。
  • 不使用该中间件时,Auth::check()默认调用web guard,而Sanctum的API登录状态绑定在sanctum guard上,因此无法识别已登录的API用户。通过指定Auth::guard('sanctum')->check(),可以直接验证请求中的Sanctum令牌,从而正确识别登录状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:05:59