
依赖
环境:php 5.5 以上 + OpenSSL扩展
lcobucci/JWT
可使用composer 安装
composer require lcobucci/jwt
也可以直接到 GitHub下载
GitHub地址: https://github.com/lcobucci/jwt
参数解释
当然它们里面还有更多的引用需要你自己加,这个在你调试时根据错误提示一个个补就好了,这里就不多写了。 实例 使用【lcobucci/JWT】产生 Token 的方式有两种,在这里我只试验了第二种。 第一种:使用秘钥签名生成 token use LcobucciJWTBuilder;
use LcobucciJWTSignerHmacSha256;
$builder = new Builder();
$signer = new Sha256();
// 设置发行人
$builder->setIssuer('http://example.com');
// 设置接收人
$builder->setAudience('http://example.org');
// 设置id
$builder->setId('4f1g23a12aa', true);
// 设置生成token的时间
$builder->setIssuedAt(time());
// 设置在60秒内该token无法使用
$builder->setNotBefore(time() + 60);
// 设置过期时间
$builder->setExpiration(time() + 3600);
// 给token设置一个id
$builder->set('uid', 1);
// 对上面的信息使用sha256算法签名
$builder->sign($signer, '签名key');
// 获取生成的token
$token = $builder->getToken();验证 Token use LcobucciJWTSignerHmacSha256; $parse = (new Parser())->parse($token); $signer = new Sha256(); $parse->verify($signer,'签名key');// 验证成功返回true 失败false 第二种:使用RSA和ECDSA签名 RSA和ECDSA签名是基于公钥和私钥,所以必须使用私钥生成和验证使用 use LcobucciJWTSignerKeychain;
// 注意这里使用的sha256
use LcobucciJWTSignerRsaSha256;
$signer = new Sha256();
$keychain = new Keychain();
$builder = new Builder();
$builder->setIssuer('http://example.com');
$builder->setAudience('http://example.org');
$builder->setId('4f1g23a12aa', true);
$builder->setIssuedAt(time());
$builder->setNotBefore(time() + 60);
$builder->setExpiration(time() + 3600);
$builder->set('uid', 1);
// 与上面不同的是这里使用的是你的私钥,并提供私钥的地址
$builder->sign($signer, $keychain->getPrivateKey('file://{私钥地址}'));
$toekn = $builder->getToken();最后还可以通过强制转换的形式来拿到你想要的纯字符串的 Token $toekn = (string) $builder->getToken(); 和前端的交互可以放在返回的 JSON 格式中通过参数带过去,也可以存放在 header Authorization 中。 验证 Token $signer = new LcobucciJWTSignerRsaSha256(); $keychain = new LcobucciJWTSignerKeychain(); $parse = new LcobucciJWTParser(); $parse->parse((string)$token); var_dump($token->verify($signer, $keychain->getPublicKey(self::$dir . '/public.key'))); )) 获取数据 因为数据部分可以直接获取到,不用解密。所以在验证token合法后直接读取即可,这也是不要在载体中存放敏感信息的原因。 $parse = (new Parser())->parse($token);
// 获取全部信息,返回一个数组,
var_dump($parse->getClaims());
// 获取单条信息
var_dump($parse->getClaim('aud'));PHP实例相关栏目本月热门文章
热门相关搜索
北京印刷学院排名
北方工业大学排名
北京航空航天大学排名
首都经济贸易大学排名
中国传媒大学排名
首都师范大学排名
中国地质大学(北京)排名
北京信息科技大学排名
中央民族大学排名
中国戏曲学院排名
河北政法职业学院排名
河北经贸大学排名
天津中德应用技术大学排名
天津医学高等专科学校排名
天津美术学院排名
天津音乐学院排名
天津工业大学排名
北京工业大学耿丹学院排名
北京警察学院排名
天津科技大学排名
铁岭卫生职业学院排名
沈阳北软信息职业技术学院排名
吉林艺术学院排名
吉林体育学院排名
白城师范学院排名
通化师范学院排名
吉林农业大学排名
长春电子科技学院排名
吉林工业职业技术学院排名
吉林司法警官职业学院排名
吉林警察学院排名
长春健康职业学院排名
吉林水利电力职业学院排名
大庆师范学院排名
黑龙江大学排名
哈尔滨剑桥学院排名
哈尔滨铁道职业技术学院排名
哈尔滨应用职业技术学院排名
黑龙江民族职业学院排名
七台河职业学院排名
黑龙江生态工程职业学院排名
华东师范大学排名
上海健康医学院排名
华东理工大学排名
上海交通大学排名
同济大学排名
复旦大学排名
上海杉达学院排名
上海戏剧学院排名
上海音乐学院排名
|