要在 Laravel Sanctum 中创建访问令牌,需要在createToken
方法中传递一个字符串。我觉得这很奇怪,因为您传入的任何内容要么使用 SHA-256 进行哈希处理,要么您可以获取纯文本令牌。
为什么访问令牌不是基于随机字符串创建的?例如,它可以很容易地完成Str::random(10)
。我不太确定要传递什么名字。
要在 Laravel Sanctum 中创建访问令牌,需要在createToken
方法中传递一个字符串。我觉得这很奇怪,因为您传入的任何内容要么使用 SHA-256 进行哈希处理,要么您可以获取纯文本令牌。
为什么访问令牌不是基于随机字符串创建的?例如,它可以很容易地完成Str::random(10)
。我不太确定要传递什么名字。
您传递给 createToken 的字符串是令牌名称。
虽然您可能不需要它,但在某些用例中它会很有用。
例如,如果您可能有两种不同类型的令牌,一种用于网络,一种用于移动应用程序,并且每种类型都有不同的到期时间,那么您可以将每种类型分组到特定名称下,例如“web-token”和“mobile” -令牌'。
不是每个人都需要这个功能,但拥有它是件好事,你永远不知道什么时候需要它。
如果你想自动生成一个随机名称,你可以简单地覆盖 createToken 方法来生成一个随机字符串,如下所示:
打开 app/User.php 并粘贴以下方法。
public function createToken(array $abilities = ['*'])
{
$token = $this->tokens()->create([
'name' => Str::random(10),
'token' => hash('sha256', $plainTextToken = Str::random(80)),
'abilities' => $abilities,
]);
return new NewAccessToken($token, $token->id.'|'.$plainTextToken);
}
这未经测试,但它应该可以工作。