laravel - Laravel Sanctum 在不创建新令牌的情况下检索 PlainTextToken
问题描述
我正在用 vue 和 laravel 创建一个 SPA。我知道我可以为每个用户发出令牌并将其作为新条目存储在数据库中。从文档中,我只能使用 laravel 以散列格式列出用户可用的所有令牌,并且$token->plainTextToken
无法从 eloquent 查询中访问该属性。我同时使用普通身份验证和密室身份验证,有时我需要将令牌还给用户。我必须在每次页面刷新时发出新令牌还是有办法解决这个问题?
解决方案
我不知道我是否正确理解了你的问题。但是您是否打算在身份验证后向用户发放令牌?
如您所说,令牌存储在数据库中。但是存储的是散列副本。创建令牌的那一刻,您可以调用 plainTextToken 属性来获取令牌的未散列副本。这是您的 Vue 应用程序在每个请求期间应发送的授权。
$token = $user->createToken('token-name')->plainTextToken;
这个令牌值应该发给你的 vue 应用程序以供随后存储和使用。
其次,将返回的 $token 的值(如 Laravel <= 8.**)可能包含表的 id 和令牌的未散列副本。例如
4|92paqtuqnd92920101ijdkksksn
您要分解该字符串,并且仅在管道符号之后发送值。那里的第一个值仅显示表格行的 id。
最后,我不明白为什么每次页面刷新后都需要发出新的令牌。也许我没有正确理解你的问题。但是您可以在响应中简单地将令牌传递回您的 vue 应用程序,或者如果它是同步请求,您可以将其存储在会话中并在需要时将其提取。
推荐阅读
- c++ - 尝试链接 curl 库时出现链接器/编译器错误
- emacs - emacs 26 中的无效函数,但在 emacs 25 中有效
- c - C:向控制台显示彩色输出不起作用
- java - 我如何解决它?我尝试将我的项目推送到 git hub 但是
- dotnetnuke-7 - 尝试将其从 dnn7 移动到 dnn9 后 DNN 模块错误
- swift - Apple Vision – 是否可以从静态图像中获取相机位置?
- php - 如何在 PHPSpreadsheet 中获取自定义数字格式
- sql - 给定表中给定行中空值的百分比
- excel - 如何遍历列表并打印输出
- flutter - analysis_options.yaml 未找到包含的文件