【PHP】PHP实现JWT生成和验证

小破孩
2022-06-23 / 0 评论 / 390 阅读 / 正在检测是否收录...
JWT里面的 encode 和 decode方法进行生成token和验证token
    /**
     * @Author: 小破孩嫩
     * @Email: 3584685883@qq.com
     * @Time: 2021/6/17 16:14
     * @param $uid
     * @return mixed
     * @Description:生成token
     */
    public function setToken($uid){
        //私钥
        $privateKey  = <<<EOD
    -----BEGIN RSA PRIVATE KEY-----
    MIICXAIBAAKBgQC8kGa1pSjbSYZVebtTRBLxBz5H4i2p/llLCrEeQhta5kaQu/Rn
    vuER4W8oDH3+3iuIYW4VQAzyqFpwuzjkDI+17t5t0tyazyZ8JXw+KgXTxldMPEL9
    5+qVhgXvwtihXC1c5oGbRlEDvDF6Sa53rcFVsYJ4ehde/zUxo6UvS7UrBQIDAQAB
    AoGAb/MXV46XxCFRxNuB8LyAtmLDgi/xRnTAlMHjSACddwkyKem8//8eZtw9fzxz
    bWZ/1/doQOuHBGYZU8aDzzj59FZ78dyzNFoF91hbvZKkg+6wGyd/LrGVEB+Xre0J
    Nil0GReM2AHDNZUYRv+HYJPIOrB0CRczLQsgFJ8K6aAD6F0CQQDzbpjYdx10qgK1
    cP59UHiHjPZYC0loEsk7s+hUmT3QHerAQJMZWC11Qrn2N+ybwwNblDKv+s5qgMQ5
    5tNoQ9IfAkEAxkyffU6ythpg/H0Ixe1I2rd0GbF05biIzO/i77Det3n4YsJVlDck
    ZkcvY3SK2iRIL4c9yY6hlIhs+K9wXTtGWwJBAO9Dskl48mO7woPR9uD22jDpNSwe
    k90OMepTjzSvlhjbfuPN1IdhqvSJTDychRwn1kIJ7LQZgQ8fVz9OCFZ/6qMCQGOb
    qaGwHmUK6xzpUbbacnYrIM6nLSkXgOAwv7XXCojvY614ILTK3iXiLBOxPu5Eu13k
    eUz9sHyD6vkgZzjtxXECQAkp4Xerf5TGfQXGXhxIX52yH+N2LtujCdkQZjXAsGdm
    B2zNzvrlgRmgBrklMTrMYgm1NPcW+bRLGcwgW2PTvNM=
    -----END RSA PRIVATE KEY-----
    EOD;
        $payload = [
            'iss'=>'xiaopohai',          //签发人(官方字段:非必需)
            'exp'=>time()+3600*24*7,     //过期时间(官方字段:非必需)
            'aud'=>'everyone',           //受众(官方字段:非必需)
            'nbf'=>time(),               //生效时间(官方字段:非必需)
            'iat'=>time(),               //签发时间(官方字段:非必需)
            'userInfo'=>[
                'id' =>$uid,
            ],
        ];
        $token = JWT::encode($payload,$privateKey,'HS256');
        return $token;
    }

    /**
     * @Author: 小破孩嫩
     * @Email: 3584685883@qq.com
     * @Time: 2021/6/17 16:01
     * @param $token
     * @return int[]
     * @Description:验证token
     */
    public function checkToken($token){
        try{
            //公钥
            $publicKey = <<<EOD
    -----BEGIN PUBLIC KEY-----
    MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC8kGa1pSjbSYZVebtTRBLxBz5H
    4i2p/llLCrEeQhta5kaQu/RnvuER4W8oDH3+3iuIYW4VQAzyqFpwuzjkDI+17t5t
    0tyazyZ8JXw+KgXTxldMPEL95+qVhgXvwtihXC1c5oGbRlEDvDF6Sa53rcFVsYJ4
    ehde/zUxo6UvS7UrBQIDAQAB
    -----END PUBLIC KEY-----
    EOD;
            $res = JWT::decode($token,$publicKey,['HS256']);
            returnResponse('200','请求成功', $res);
        }catch (Exception $e) {
            returnResponse(100,$e->getMessage());
        }
    }
学习地址:https://github.com/firebase/php-jwt
0

评论 (0)

取消