猿问

JWT 和 PHP:验证传递的令牌 (Lcobucci\JWT)

我正在尝试学习如何将 JWT 令牌从 ReactJS 传递到我的 PHP API。我目前有两个功能:用于检查用户名和密码的身份验证功能,然后生成并传回令牌。生成部分似乎有效,但是当我将令牌传回授权承载中时,我无法对其进行验证。我正在使用 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% 确定我做错了,但谁能帮我解决这个问题?


慕慕森
浏览 309回答 1
1回答

红糖糍粑

如果您要立即检查有效性,则需要更改canOnlyBeUsedAfter($time + 60)简单地canOnlyBeUsedAfter($time)否则您需要等待 60 秒才能生效。
随时随地看视频慕课网APP
我要回答