依赖
环境: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实例相关栏目本月热门文章
热门相关搜索
路由器设置
木托盘
宝塔面板
儿童python教程
心情低落
朋友圈
vim
双一流学科
专升本
我的学校
日记学校
西点培训学校
汽修学校
情书
化妆学校
塔沟武校
异形模板
西南大学排名
最精辟人生短句
6步教你追回被骗的钱
南昌大学排名
清朝十二帝
北京印刷学院排名
北方工业大学排名
北京航空航天大学排名
首都经济贸易大学排名
中国传媒大学排名
首都师范大学排名
中国地质大学(北京)排名
北京信息科技大学排名
中央民族大学排名
北京舞蹈学院排名
北京电影学院排名
中国戏曲学院排名
河北政法职业学院排名
河北经贸大学排名
天津中德应用技术大学排名
天津医学高等专科学校排名
天津美术学院排名
天津音乐学院排名
天津工业大学排名
北京工业大学耿丹学院排名
北京警察学院排名
天津科技大学排名
北京邮电大学(宏福校区)排名
北京网络职业学院排名
北京大学医学部排名
河北科技大学排名
河北地质大学排名
河北体育学院排名
|



