要在Laravel Sanctum中创建访问令牌,需要在createToken
方法内传递一个字符串。我觉得这很奇怪,因为无论您传入什么,都可以使用SHA-256进行散列,也可以获取纯文本令牌。
为什么不只是基于随机字符串创建访问令牌?例如,使用Str::random(10)
可以轻松完成此操作。我不太确定叫什么名字。
答案 0 :(得分:2)
您传递给createToken的字符串是令牌名称。
虽然您可能不需要它,但在一些用例中它会很有用。
例如,如果您可能有两种不同类型的令牌,一种是针对网络的令牌,另一种是针对移动应用的令牌,并且每种令牌的有效期都不同,那么您可以将每种类型的令牌归类为“ web-token”和“移动令牌”。
并不是每个人都需要该功能,但是最好在不知道何时需要它时使用它。
如果要自动生成一个随机名称,只需覆盖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);
}
这未经测试,但可以正常工作。