【问题标题】:Upgrading lcobucci/jwt from 3.x to 4.x: migrating ValidationData with $currentTime将 lcobucci/jwt 从 3.x 升级到 4.x:使用 $currentTime 迁移 ValidationData
【发布时间】:2022-01-11 18:39:31
【问题描述】:

我正在迁移另一位开发人员编写的 lcobucci/jwt 代码,我可以看到几个验证调用,如下所示:

    $validationData = new ValidationData($this->getNowTime() + self::TTL_TIME_LIMIT);
    if (!$token->validate($validationData)) {
        // ...
    }

    $validationData = new ValidationData($this->getNowTime());
    if (!$token->validate($validationData)) {
        // ...
    }

upgrading steps 我可以看到验证现在是这样完成的:

!$this->configuration->validator()->validate($token, ...$this->configuration->validationConstraints())

但我看不到如何使用新 API 传递 $currentTime 参数。正如你所看到的,在旧代码中,它并不总是像第一次调用那样总是一个实际的当前时间(据我所知,这样做是为了查看令牌是否会在下一小时内过期)。

在这种情况下有什么平滑迁移的解决方案?

【问题讨论】:

    标签: php jwt


    【解决方案1】:

    经过一些研究,我能够将其升级到新的 API:

    $validAtConstraint = new LooseValidAt(
        new FrozenClock($this->getNowTime()->modify(\sprintf('+%s seconds', self::TTL_TIME_LIMIT)))
    );
    
    if ($this->configuration->validator()->validate(
            $token,
            $validAtConstraint,
            ...$this->configuration->validationConstraints()
        )
    ) {
        // ...
    }
    

    另外,在库 github 的讨论中查看更详细的答案:https://github.com/lcobucci/jwt/discussions/813

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2021-12-31
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多