PHPMyAdmin 无法显示 Laravel 令牌明文,因 token 字段默认为 SHA-256 哈希或 AES 加密后 Base64 编码;验证有效性应查 expires_at、last_used_at 和 abilities 等字段,而非尝试解密。
phpmyadmin 本身不理解 laravel 的令牌机制,它只是个数据库可视化工具;你看到的 token 字段内容(比如一长串 base64 字符或加密字符串)基本无法直接解读——这不是 phpmyadmin 的问题,是 laravel 的设计使然。
为什么在 phpMyAdmin 里查不到“有效令牌”的明文?
Laravel 默认对 token 字段(如 personal_access_tokens 表中的 token 列)使用 SHA-256 哈希存储(Laravel 9+),或在旧版本中用 AES 加密 + base64 编码。phpMyAdmin 显示的是哈希值或密文,不是原始令牌字符串。
- 查看
personal_access_tokens表时,token字段值类似sha256:xxxxxxxxxxxxxxxx...或一串无规律 Base64,这正常 - 真正用于 API 请求的原始令牌(如
xyZabc123...)只在创建时返回一次,之后就丢弃了,不会存入数据库 - 如果你在代码里用了
createToken()并没保存返回值,那这个令牌已不可恢复
如何验证某条 token 记录是否还在生效?
重点看数据库字段本身是否能反映状态,而不是试图“解密” token:
- 检查
expires_at字段:NULL 表示永不过期;若为时间戳且早于当前时间,则已过期 - 检查
last_used_at:可辅助判断是否近期被用过(但不等于有效,仅作参考) - 检查
abilities字段:是 JSON 数组(如["*"]或["read"]),确认权限范围是否符合预期 - 注意
name字段:通常是你调用createToken('api-token')传入的名字,可用于人工归类
如果真要调试令牌验证失败的问题,别只盯 phpMyAdmin
数据库只是结果快照,令牌校验逻辑发生在 PHP 层。常见断点位置比查表更有效:
- 确认请求头是否带了正确格式:
Authorization: Bearer xyZabc123...(注意Bearer和空格) - 检查中间件是否用了
auth:sanctum而不是auth:api(Sanctum 和 Passport 的 token 表结构不同) - 运行
php artisan sanctum:publish确保配置文件和迁移已就绪(尤其config/sanctum.php中的stateful域名设置) - 如果用的是
tokenable_type/tokenable_id关联,确保对应用户记录未被删除或类型写错(如误存成App\Models\Admin却查User)
真正麻烦的不是找 token,而是搞清它属于哪个模型、走的是 Sanctum 还是 Passport、有没有跨域或 Cookie 设置干扰——这些在 phpMyAdmin 里一个字都看不到。
立即学习“PHP免费学习笔记(深入)”;



















