【问题标题】:JWT and PHP: Validating a passed token (Lcobucci\JWT)JWT 和 PHP:验证传递的令牌 (Lcobucci\JWT)
【发布时间】:2020-01-06 19:00:31
【问题描述】:

我正在尝试学习如何将 JWT 令牌从 ReactJS 传递到我的 PHP API。我目前有 2 个功能:用于检查用户名和密码的身份验证功能,然后生成并传回令牌。生成部分似乎有效,但是当我将令牌传回授权承载时,我无法对其进行验证。我正在使用 Lcobucci\JWT 库。

这是我的代码:

 public function attempt_login($input){
            $time = time();
            $token = (new Builder())->issuedBy('https://api.example.com')
            ->permittedFor('https://example.com') 
            ->identifiedBy('4f1g23a12aa', true) 
            ->issuedAt($time) 
            ->canOnlyBeUsedAfter($time + 60) 
            ->expiresAt($time + 3600) 
            ->withClaim('uid',1) 
            ->getToken(); 
            return $token;
    }

    public function find($headers){
        $auth = $headers['Authorization'];
        if (preg_match('/Bearer\s(\S+)/', $auth, $matches)) {
            $token = (new Parser())->parse((string) $matches[1]);
            $data = new ValidationData();
            $data->setIssuer('https://api.example.com');
            $data->setAudience('https://example.com');
            $data->setId('4f1g23a12aa');
            dd($token->validate($data));
        }else{
            dd('nope');
        }
    }

当我倾倒和死亡时,我总是假装。我 95% 确定我做错了,但谁能帮我解决这个问题?

【问题讨论】:

  • 如果您尝试将 canOnlyBeUsedAfter 更改为 $time 会怎样?
  • 这就像一个魅力! (我认为):)
  • 我会把它移到答案中!

标签: php jwt jwt-auth


【解决方案1】:

如果您要立即检查有效性,则需要更改

canOnlyBeUsedAfter($time + 60)

简单

canOnlyBeUsedAfter($time)

否则需要等待60秒才能生效。

【讨论】:

    猜你喜欢
    • 2019-04-22
    • 2019-06-23
    • 2017-03-22
    • 2017-07-27
    • 2019-10-20
    • 2016-01-17
    • 2017-10-22
    • 1970-01-01
    • 2017-07-31
    相关资源
    最近更新 更多