PHP JWT验证

composer require firebase/php-jwt
use Firebase\JWT\JWT as CreateJwt;
public static function signToken($openid)
    {
        $key = '15553242780';
        $token = array(
            "iss"=>$key,
            "aud"=>'',
            "iat"=>time(),
            "nbf"=>time()+3,
            "exp"=>time()+200,
            "data"=>[
                'uid'=>$openid,
            ]
        );
        $jwt = CreateJwt::encode($token,$key,"HS256");
        return $jwt;
    }
public static function checkToken($token)
    {
        $key = '15553242780';
        $status = array("code"=>2);
        try {
            CreateJwt::$leeway = 60;//当前时间减去60,把时间留点余地
            $decoded = CreateJwt::decode($token, $key, array('HS256')); //HS256方式,这里要和签发的时候对应
            $arr = (array)$decoded;
            $res['code'] = 1;
            $res['data'] = $arr['data'];
            return $arr['data']->uid;//解析出来的id 在数组里面的对象

        } catch (\Firebase\JWT\SignatureInvalidException $e) { //签名不正确
            $status['msg'] = "q";
            return $status;
        } catch (\Firebase\JWT\BeforeValidException $e) { // 签名在某个时间点之后才能用
            $status['msg'] = "token失效";
            return $status;
        } catch (\Firebase\JWT\ExpiredException $e) { // token过期
            $status['msg'] = "token失效";
            return $status;
        } catch (\Exception $e) { //其他错误
            $status['msg'] = "未知错误";
            return $status;
        }

    }
public static function weChat($code)
    {
        $url = "https://api.weixin.qq.com/sns/jscode2session?appid=wx5bb48a36090c044f&secret=574c1c942985920f021686b9d55ab502&js_code=$code&grant_type=authorization_code";
        $userInfo = json_decode(file_get_contents($url),true);
        return $userInfo;

    }
public function handle($request, \Closure $next)
    {
        //
        $token = $request->header('token');
        $userInfo = JWT::checkToken($token);
        if (!is_string($userInfo)){
            return json(['code'=>301,'msg'=>'Token令牌不通过,拒绝访问']);
        }
        $u_id = user::where('openid','=',$userInfo)->find()->value('id');
        $request->u_id = $u_id;
        return $next($request);
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值