如何向 laravel-passport 访问令牌添加自定义声明?

Vis*_*iya 5 laravel laravel-passport

我刚刚使用了 laravel-passport,它与 jwt auth 相同。

我想向我的 accessToken 添加一些自定义声明,可以吗?

我想传递2fa_status => true访问令牌,当使用此访问令牌进行 API 调用时,我也希望来自令牌的声明。

例如代币的预期索赔

{
  "aud": "7",
  "jti": "123",
  "iat": 1568368682,
  "nbf": 1568368682,
  "exp": 1599991082,
  "sub": "2",
  "scopes": [],
  "2fa_status": false
}
Run Code Online (Sandbox Code Playgroud)

我生成令牌如下:

  $tokenResult = $user->createToken('Personal Access Token');
Run Code Online (Sandbox Code Playgroud)

sid*_*art -1

有可能的

将其添加到AuthServiceProvider

Passport::routes();
Passport::personalAccessClientId(1); //<-- this 1 is id of your personal key
Passport::tokensExpireIn(now()->addDays(15));
Passport::refreshTokensExpireIn(now()->addDays(30));
Run Code Online (Sandbox Code Playgroud)

现在你可以像这样创建新的令牌

$user->createToken('email')->accessToken; // you can change email to any for remember why this code generated like social facebook
Run Code Online (Sandbox Code Playgroud)

根据添加更多参数的文档尝试这个

$user->createToken('email', ['extra' => 'params'])->accessToken;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助