JsonWebToken的使用

composer require firebase/php-jwt
use \Firebase\JWT\JWT; //导入JWT
    //生成token'返回客户端 加密时候附带自己要加密的用户信息
    public function Make_Token($userinfo)
    {
        //生成token
        $key = "daixs";
        //$key 这里是自定义的一个随机字串,应该写在config文件中的,解密时也会用,相当于加密中常用的 盐 salt
        $token = [
            "iss" => "",  //签发者 可以为空
            "aud" => "", //面象的用户,可以为空
            "iat" => time(), //签发时间
            "nbf" => time(), //在什么时候jwt开始生效  (这里表示生成100秒后才生效)
            "exp" => time() + 7200, //token 过期时间
            "uid" => $userinfo //记录的userid的信息,这里是自已添加上去的,如果有其它信息,可以再添加数组的键值对
        ];
        $jwt = JWT::encode($token, $key, "HS256"); //根据参数生成了 token
        return $jwt;
    }

//解密
    public function getinfo()
    {
        $key = "daixs";  //上一个方法中的 $key 本应该配置在 config文件中的
        $info = JWT::decode(input('token'), $key, ["HS256"]); //解密jwt
        $arrinfo = $this->object_to_array($info);
        // echo "<pre>";print_r($arrinfo['uid']);echo "<pre>";
        // die();
        $arrinfo['uid']['avatar'] = 'https://thirdqq.qlogo.cn/g?b=oidb&k=9XU9TvseKiagUpudgUXj3iaw&s=100';
        $data = [
            'code' => 20000,
            'data' => $arrinfo['uid'],
            'roles' => ['admin']
        ];
        return json($data);
    }

为您推荐