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

Laravel中如何获取已登录用户的Sanctum令牌?

获取已登录用户的Laravel Sanctum令牌

1. 查看用户已有的个人访问令牌

如果用的是Sanctum的个人访问令牌(给第三方应用、API客户端授权用),已登录用户的令牌可以直接通过关联模型获取:

// 在控制器或视图里调用
$tokens = auth()->user()->tokens;

返回的是Laravel\Sanctum\PersonalAccessToken实例集合,你可以遍历拿到令牌的ID、名称,但要注意:原始令牌字符串只有在创建时能拿到,数据库里存的是哈希后的值,没法恢复原令牌:

foreach ($tokens as $token) {
    echo "令牌名称:{$token->name}";
    echo "令牌ID:{$token->id}";
    // $token->token 是哈希值,不是原始令牌
}

2. 生成新令牌并返回给用户

如果需要在仪表盘里给当前用户生成新令牌(比如提供"创建新令牌"按钮),可以这么写:

// 生成带自定义名称的令牌,还能指定权限范围
$token = auth()->user()->createToken('仪表盘API访问令牌')->plainTextToken;

// plainTextToken 就是可直接用的原始令牌,要返回给用户保存
return response()->json(['token' => $token]);

3. SPA场景下的令牌处理

如果你的仪表盘是SPA单页应用,用Sanctum做SPA认证的话,令牌会通过Set-Cookie头自动存在浏览器里,前端不用手动拿令牌字符串——Sanctum会自动处理cookie里的认证信息,直接调/api/user这类接口就能验证登录状态。

注意点

  • 原始令牌仅创建时可见,生成后一定要让用户立刻保存,之后没法再从数据库里找回。
  • 可以用tokens()->where('name', '目标令牌名称')筛选特定名称的令牌。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:32:46