laravel passport是否在承载令牌中序列化整个用户对象?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel passport是否在承载令牌中序列化整个用户对象?相关的知识,希望对你有一定的参考价值。

我正在使用带有护照和jensseger mongodb的laravel来创建API。一切运作良好,但我注意到我从护照上获得的持票人代币很长。我的问题是,护照将整个用户对象存储在持有者令牌中,或者如果Auth :: user仅通过id从db获取用户....

我有一个模特:

class User extends \Jenssegers\Mongodb\Eloquent\Model implements
    AuthenticatableContract,
    AuthorizableContract,
    CanResetPasswordContract
{
    use Authenticatable, Authorizable, CanResetPassword, Notifiable, HasApiTokens;
    protected $collection = 'db.users';
    protected $fillable = ['name','phone','email' ...];
  ......
}

然后我使用$user->createToken('....')->accessToken在登录时生成令牌。

然后我使用Auth::user()从内部获取令牌的当前用户。这一切都有效,但持票人代币很长。

答案

令牌很长,因为它们已经被base64编码。

这是我在另一个SO问题上找到的随机令牌:

eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6IjgzYmQ5NmNkYWE1MWZhMTJlMzQ4OTEzYWNjOGQwNmMzMjE2YzQ0N2U3ZmQyOWQyYThiNmY1YjUwMzAzZWFlOGU4ZjE4ZjNhM2M4OGE4OGVkIn0.eyJhdWQiOiIxIiwianRpIjoiODNiZDk2Y2RhYTUxZmExMmUzNDg5MTNhY2M4ZDA2YzMyMTZjNDQ3ZTdmZDI5ZDJhOGI2ZjViNTAzMDNlYWU4ZThmMThmM2EzYzg4YTg4ZWQiLCJpYXQiOjE1MzY5NjEyMjgsIm5iZiI6MTUzNjk2MTIyOCwiZXhwIjoxNTY4NDk3MjI4LCJzdWIiOiI1Iiwic2NvcGVzIjpbXX0.Ev1S4MhkDwdNPMhFIbSNdTUnlK-C4CRiUIHEhBulkjy4rTCkAGVWX01DsAdkGa_SP2o7d9M5Yw71m1yo3FG1eNZriJHbeKfLVz78MaWrX9daITmPhgh8sGaF9JlASU0I3QmVO-hnX57QSFTvDfzBjS3ApDx-CUhPV9M7ycljzBoYwiQZHloBpxHVqaavN-9CQQEuaZf8MhRJ-dg2BPoEVHp5lUtsjtZUll4hztvkJO4uz_hth0bo_i7l7pyrcS811BPK1iLAWlmsjdpUziFxCEpVsVVBpO5I8N5SLwgfiEsfM9PuMQua4kkt7whDUzitPQCaPR6TaBifFZfy1Hi37TYenK3aGb8VrX5HbU6HmYeYeIx8lFcugRwktVtuAURoRSWrlAkcfyMRM1nraSBWO3XVLc8nDNtnx6UG3yEjTLeqrUamy43Y5a4wszLnE9iXiPVA0Ip-_Y7gKsL9uE9h523YtIO1nGCJVSg8jr7T1XKWGaTFssJf9E9T5rAmdIu-hbW9Tm2NVL1z0dINva_F6SLmUqWQ0c3Wl1mrHmH3VqEBFP5-FUWzw2hFj1agwLe_933i5UdLl1EHwUqFpr_cVjVj952Do8LzEAuL 2LLfZo82kPTP-h5jdWaWmoH-tJ_xXuWoRD5Y9nCFm_6-zJJpR3kcgz3jLMUCu_VAgNWTtw0

将该令牌复制并粘贴到here中。

{
  "typ": "JWT",
  "alg": "RS256",
  "jti":"83bd96cdaa51fa12e348913acc8d06c3216c447e7fd29d2a8b6f5b50303eae8e8f18f3a3c88a88ed"
}

有效载荷

{
  "aud": "1",
  "jti": "83bd96cdaa51fa12e348913acc8d06c3216c447e7fd29d2a8b6f5b50303eae8e8f18f3a3c88a88ed",
  "iat": 1536961228,
  "nbf": 1536961228,
  "exp": 1568497228,
  "sub": "5",
  "scopes": []
}

有效载荷有你的问题的答案,这是sub - 主题 - 索赔。这表示经过身份验证的实体ID。所以用户ID 5。

以上是关于laravel passport是否在承载令牌中序列化整个用户对象?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Passport:API 的令牌是不是存储在服务器上,存储在哪里?

Laravel 6 Passport CSRF 令牌不匹配

Laravel Passport API:检索经过身份验证的令牌

Laravel 通过 Passport 实现 API 请求认证:令牌作用域详解

Laravel Passport 密码授予刷新令牌

Laravel 通过 Passport 实现 API 请求认证:隐式授权令牌