不能直接查看已生成的明文token,因sanctum和passport仅在创建时短暂暴露明文,数据库中存储的均为不可逆哈希值;可查元数据(如用户关联、创建时间、过期状态、权限范围等)并依赖中间件验证有效性。

不能直接“查看”已生成的明文 token,因为 Sanctum 和 Passport 都只在创建时短暂暴露明文,之后数据库里存的都是不可逆哈希值。真正能查到的,是 token 的元数据(比如谁创建的、什么时候创建的、有没有过期、有没有被撤销)。操作重点不是找明文,而是查记录、验状态、做管理。
查 Sanctum token 的基本信息
Sanctum 的 token 存在 personal_access_tokens 表里,字段包括:
-
tokenable_type / tokenable_id:关联的用户模型(通常是
App\Models\User和用户 ID) -
name:你调用
createToken('xxx')时传的名称,比如'mobile'或'web-session' - token:哈希后的值(不可还原为明文)
-
abilities:JSON 数组,存权限范围(如
["read", "write"]),空数组表示全权限 -
last_used_at:最后一次被验证的时间(需开启
sanctum.php中的with_cookie或手动调用touchLastUsed()) - expires_at:可选过期时间(默认 null,即永不过期)
- created_at:生成时间
你可以用 Tinker 或控制器里这样查:
php artisan tinker$user = App\Models\User::find(1);<br>$user->tokens; // 查该用户所有 token 记录(不含明文)<br>$user->tokens()->where('name', 'mobile')->first();
查 Passport token 的详细信息
Passport 把 token 存在 oauth_access_tokens 表,字段更丰富:
- id:UUID 格式 token 字符串(明文可见!但不推荐直接用)
- user_id:所属用户
-
client_id:对应哪个 OAuth 客户端(
oauth_clients表) - scopes:JSON 数组,类似 Sanctum 的 abilities
- expires_at:严格过期时间(Passport 默认 1 年)
- revoked:布尔值,true 表示已撤销
- created_at / updated_at
查法类似:
php artisan tinker$user = App\Models\User::find(1);<br>$user->tokens; // Passport 也提供 tokens 关系,返回 AccessTokens 集合<br>// 或直接查表:<br>DB::table('oauth_access_tokens')->where('user_id', 1)->get();
前端传来的 token 到底对应谁?
这不是“查数据库”,而是让 Sanctum/Passport 帮你解析并验证。最可靠的方式是发起一次受保护请求:
- 在 Postman 或 curl 中带 Header:
Authorization: Bearer xxxxxxxx - 访问一个
auth:sanctum或auth:passport保护的路由,比如GET /api/user - 如果返回 200 和用户数据,说明 token 有效且已绑定用户;401 就是无效、过期或已被 revoke
你也可以在控制器里主动调试:
use Illuminate\Http\Request;<br>public function debug(Request $request) {<br> return response()->json([<br> 'user' => $request->user(),<br> 'token' => $request->bearerToken(), // 只取 token 字符串,不验证<br> ]);<br>}
哪些操作会“让 token 失效”?
查 token 是否还能用,关键看它是否还处于活跃状态:
-
Sanctum:调用
$user->currentAccessToken()->delete()(当前设备)、$user->tokens()->where('name', 'xxx')->delete()(指定名)、或$user->tokens()->delete()(全部) -
Passport:调用
$token->revoke(),或$user->tokens()->where('id', $tokenId)->delete() - 两者都支持按
expires_at自动失效(Passport 默认启用,Sanctum 需手动设置) - Sanctum 的 cookie 模式下,session 过期或 CSRF 失败也会导致认证失败,但这不属于 token 本身失效
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











