jwt refresh 不会更新自定义声明
Posted
技术标签:
【中文标题】jwt refresh 不会更新自定义声明【英文标题】:jwt refresh doesn't update custom claims 【发布时间】: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 上打开一个问题。你实际使用的是什么包? 你有解决这个问题的办法吗? 【参考方案1】:试试$newToken = auth()->refresh(false, true);
第二个参数是“reset claim”:
JWTGuard 类 -
public function refresh($forceForever = false, $resetClaims = false)
【讨论】:
以上是关于jwt refresh 不会更新自定义声明的主要内容,如果未能解决你的问题,请参考以下文章