【问题标题】:jwt refresh doesn't update custom claimsjwt refresh 不会更新自定义声明
【发布时间】:2019-06-09 14:42:54
【问题描述】:

这个问题已经被问过很多次了,但找不到合适的解决方案。

我这样做 - $newToken = auth()->refresh();

在我的自定义声明中,我有

 public function getJWTCustomClaims()
    {
        return [
            'is_verified' => $this->verified,
            'email' => $this->email,
            'role' => $this->getMainRole()->name
        ];
    }

场景 - 首先,当我登录时,它会返回 jwt 令牌。在那个 jwt 令牌中,我有 is_verified 、电子邮件、角色集。假设在我获得令牌时 is_verified 为 0。现在,我在数据库中将其更改为 1。现在,当我刷新令牌时,正如我在上面向您展示的那样,返回的 jwt 令牌仍然具有 is_verified 等于 0,但它应该有 1。知道如何修复它吗?

【问题讨论】:

  • 我不太清楚,但这听起来像是缓存问题。可能令牌被缓存了,当您直接修改数据库时,当然不会清除缓存。
  • 可以建议在 GitHub 上打开一个问题。你实际使用的是什么包?
  • 你有解决这个问题的办法吗?

标签: php laravel jwt


【解决方案1】:

试试$newToken = auth()->refresh(false, true);

第二个参数是“reset claim”:

JWTGuard 类 - public function refresh($forceForever = false, $resetClaims = false)

【讨论】:

    猜你喜欢
    • 2018-07-05
    • 2020-03-15
    • 2019-02-26
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 2019-03-14
    • 2021-02-25
    • 2016-01-06
    相关资源
    最近更新 更多