PHP token验证

标题 PHP token验证

composer下载

composer require lcobucci/jwt 

生成token

 public static function createToken($uid=null){
        $signer = new Sha256();//加密规则
        $time = time();//当前时间

        $token = (new Builder())
            ->issuedBy('teacher')//签发人
            ->canOnlyBeUsedBy('student')//接收人
            ->identifiedBy('MarsLei', true) //标题id
            ->issuedAt($time)//发出令牌的时间
            ->canOnlyBeUsedAfter($time) //生效时间(即时生效)
            ->expiresAt($time + 3600) //过期时间
            ->with('uid', $uid) //用户id
            ->sign($signer, 'my') //签名
            ->getToken(); //得到token
        return (string)$token;
    }

验证token

  public static function verifyToken($token=null){
       $token=$request->header('token');
        //检测是否接收到了token
        if(empty($token)){
            return 0;
        }
        //转化为可以验证的token
        $token = (new Parser())->parse((string) $token);
        //验证基本设置
        $data = new ValidationData();
        $data->setIssuer('teacher');
        $data->setAudience('student');
        $data->setId('MarsLei');

        if(!$token->validate($data)){
            return 0;
        }
        //验证签名
        $signer = new Sha256();
        if(!$token->verify($signer, 'my')){
            return 0;
        }
        //验证通过,返回用户id
        $uid = $token->getClaim('uid');
        $request['user_id']=$uid;
        return $next($request);
    }

总结

认真参考插件的README.md文件,可以很好的对其更好的使用;
以上仅是我个人的理解,如有不足希望大家可以提出建议


版权声明:本文为lmy2020start原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。