Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JWT和PHP:验证传递的令牌(Lcobucci\JWT)_Php_Jwt_Jwt Auth - Fatal编程技术网

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

JWT和PHP:验证传递的令牌(Lcobucci\JWT),php,jwt,jwt-auth,Php,Jwt,Jwt Auth,我试图学习如何将JWT令牌从ReactJS传递到我的PHP API。我目前有两个功能:身份验证功能,用于检查用户名和密码,然后生成并传回令牌。生成部分似乎可以工作,但当我将令牌传递回授权承载器时,我无法让它进行验证。我正在使用Lcobucci\JWT库 这是我的密码: public function attempt_login($input){ $time = time(); $token = (new Builder())->issued

我试图学习如何将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%肯定我做错了,但有人能帮我解决这个问题吗?

如果你马上检查有效性,你需要更改

canolybedafter($time+60)

简单地

canolybedafter($time)


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

如果您尝试在之后将您的
canOnlyBeUsedAfter
更改为只使用
$time
,效果会很好!(我想):)那我就把它变成一个答案!