laravel - 没有用户模型的 Laravel 护照 createToken
问题描述
通常,我可以按如下方式创建令牌:
$user = User::find( $tokenData['user_id'] );
return $user->createToken($tokenData['name'])->accessToken;
由于我可以访问user_id
,是否可以在不创建另一个查询 ( User::find
) 的情况下创建令牌?
因为理论上令牌本身与用户对象无关,而是user_id(我在tokenData数组中有它)。
解决方案
这是createToken
来自HasApiTokens
特征的方法:
public function createToken($name, array $scopes = [])
{
return Container::getInstance()->make(PersonalAccessTokenFactory::class)->make(
$this->getKey(), $name, $scopes
);
}
基于此,您似乎可以将代码更改为:
return app(\Laravel\Passport\PersonalAccessTokenFactory::class)->make($tokenData['user_id'], $tokenData['name'])->accessToken;
话虽这么说,最好只做一个额外的查询。你会让你的代码更难阅读、理解和维护,以节省大约 1 毫秒。这种取舍似乎不值得。
推荐阅读
- google-apps-script - 希望根据另一列的值在 Google 表格中将复选框值设置为 TRUE
- r - 如何使用跨多列的 if 语句编写 for 循环?
- javascript - 根据从数组中提取的值减少对象值?
- python - yfinance 下载数据时返回错误
- terraform - Terraform:从对象列表中检索值
- r - 根据 R 中的值绘制具有条件颜色的数据
- python - 这段代码中查找素数分解有什么问题
- swiftui - 带有 ScrollView 和 PageTabViewStyle() 的 SwiftUI NavigationView
- python - 如何在分类数据上与 seaborn 聊天获取标签值
- python - 随机字母生成器卡在最后一次迭代中