1

Laravel Sanctum でアクセス トークンを作成するには、createTokenメソッド内で文字列を渡す必要があります。渡すものは何でもSHA-256を使用してハッシュされるか、プレーンテキストトークンを取得できるため、これは奇妙だと思います。

ランダムな文字列に基づいてアクセス トークンが作成されないのはなぜですか? Str::random(10)たとえば、簡単に実行できたはずです。名前として何をパスすればよいかわかりません。

4

1 に答える 1

3

createToken に渡す文字列はトークン名です。

必要ないかもしれませんが、役に立つユースケースがいくつかあります。

たとえば、Web 用とモバイル アプリ用の 2 つの異なるタイプのトークンがあり、各タイプの有効期限が異なる場合、「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);
}

これはテストされていませんが、動作するはずです。

于 2020-07-01T18:26:48.773 に答える