easyswoole - 基于swoole扩展实现的一款高性能php框架

JWT

JSON Web Token(JWT)是目前最流行的跨域身份驗證解決方案。 隨著技術的發展,分布式web應用的普及,通過session管理用戶登錄狀態成本越來越高,因此慢慢發展成為token的方式做登錄身份校驗,然后通過token去取redis中的緩存的用戶信息,隨著之后jwt的出現,校驗方式更加簡單便捷化,無需通過redis緩存,而是直接根據token取出保存的用戶信息,以及對token可用性校驗,單點登錄更為簡單。

組件要求

  • php: >=7.1.0
  • ext-openssl: >=1.0.0
  • easyswoole/spl: ^1.2
  • easyswoole/utility: ^1.1

安裝方法

composer require easyswoole/jwt

倉庫地址

easyswoole/jwt

核心類庫方法

編碼相關

設置加密方式,默認HMACSHA256

    function algMethod(string $method):Jwt

設置秘鑰,默認Easyswoole

    function setSecretKey(string $key):Jwt

初始化一個沒有附帶信息的token的JwtObject

    public function publish():JwtObject

設置加密方式, 默認HMACSHA256

    public function setAlg($alg): self

設置用戶

    public function setAud($aud): self

設置過期時間

    public function setExp($exp): self

設置發布時間

    public function setIat($iat): self

設置發行人

    public function setIss(string $iss): self

設置jwt-id,用于標識該jwt

    public function setJti($jti): self

在此之前不可用

    public function setNbf($nbf): self

設置主題

    public function setSub($sub): self

設置其他數據

    public function setData($data): self

獲取token

    function __toString()

解碼相關

解碼

    public function decode(?string $raw):?JwtObject

獲取解碼狀態, 1:通過, -1:無效, -2:token過期

    public function getStatus(): int

獲取加密方式

    public function getAlg()

獲取用戶

    public function getAud()

獲取過期時間

    public function getExp()

獲取發布時間

    public function getIat()

獲取發行人

    public function getIss(): string

獲取jwt-id

    public function getJti()

獲取生效時間

    public function setNbf($nbf): void

獲取主題

    public function getSub()

獲取自定義數據

    public function getData()

獲取簽名

    public function getSignature()

通過key獲取相關數據

    final public function getProperty($name)

基本使用

生成token

use EasySwoole\Jwt\Jwt;

$jwtObject = Jwt::getInstance()
    ->setSecretKey('easyswoole') // 秘鑰
    ->publish();

$jwtObject->setAlg('HMACSHA256'); // 加密方式
$jwtObject->setAud('user'); // 用戶
$jwtObject->setExp(time()+3600); // 過期時間
$jwtObject->setIat(time()); // 發布時間
$jwtObject->setIss('easyswoole'); // 發行人
$jwtObject->setJti(md5(time())); // jwt id 用于標識該jwt
$jwtObject->setNbf(time()+60*5); // 在此之前不可用
$jwtObject->setSub('主題'); // 主題

// 自定義數據
$jwtObject->setData([
    'other_info'
]);

// 最終生成的token
$token = $jwtObject->__toString();

解析token

use EasySwoole\Jwt\Jwt;

$token = "eyJhbGciOiJITUFDU0hBMjU2IiwiaXNzIjoiZWFzeXN3b29sZSIsImV4cCI6MTU3MzgzNTIxMSwic3ViIjoi5Li76aKYIiwibmJmIjoxNTczODMxOTExLCJhdWQiOiJ1c2VyIiwiaWF0IjoxNTczODMxNjExLCJqdGkiOiJjYWJhZmNiMWIxZTkxNTU3YzIxMDUxYTZiYTQ0MTliMiIsInNpZ25hdHVyZSI6IjZlNTI1ZjJkOTFjZGYzMjBmODE1NmEwMzE1MDhiNmU0ZDQ0YzhkNGFhYzZjNmU1YzMzMTNjMDIyMGJjYjJhZjQiLCJzdGF0dXMiOjEsImRhdGEiOlsib3RoZXJfaW5mbyJdfQ%3D%3D";

try {
    $jwtObject = Jwt::getInstance()->decode($token);

    $status = $jwtObject->getStatus();

    // 如果encode設置了秘鑰,decode 的時候要指定
    // $status = $jwt->setSecretKey('easyswoole')->decode($token)

    switch ($status)
    {
        case  1:
            echo '驗證通過';
            $jwtObject->getAlg();
            $jwtObject->getAud();
            $jwtObject->getData();
            $jwtObject->getExp();
            $jwtObject->getIat();
            $jwtObject->getIss();
            $jwtObject->getNbf();
            $jwtObject->getJti();
            $jwtObject->getSub();
            $jwtObject->getSignature();
            $jwtObject->getProperty('alg');
            break;
        case  -1:
            echo '無效';
            break;
        case  -2:
            echo 'token過期';
        break;
    }
} catch (\EasySwoole\Jwt\Exception $e) {

}
主站蜘蛛池模板: 新鲜水果 新鲜茶 - 甜啦啦官网 | 文轩热能_水冷板散热器热设计热管理系统_铝型材铲齿摩擦焊热管_散热片散热板生产加工厂家 | 四川方法数码科技有限公司 | 黑料网 - 黑料大事记-黑料门 黑料社最新 今日黑料 热门黑料 最新反差免费-黑料网今日黑料首页_黑料网 - 黑料大事记-黑料门 黑料社最新 今日黑料 热门黑料 最新反差免费-黑料网今日黑料首页 | 我的建筑网-中国建筑工程行业门户网站! | 浙江创洁卫生消杀有限公司-浙江杀虫公司,温州消杀公司,温州灭鼠公司,灭蟑螂,灭蚊蝇,灭跳蚤,灭书虱,灭臭虫,灭螨虫,白蚁防治,房间消毒除味等专业服务 | 上海品牌设计公司|品牌策划公司|包装设计公司|上海全案LOGO设计VI设计-木马品牌设计 | 柱状_椰壳_蜂窝_果壳_粉状活性炭_活性炭厂家 - 銮桦净化 | 深圳展厅设计_产业园区展馆设计_展馆设计公司_健康产业展馆设计_展厅设计哪家好_华竣国际 | 交通标志牌-交通标牌-铝圆牌-铝三角片-铝滑槽-公路警示指示牌-方牌-高速道路反光牌毛坯-交通设施安全警示标识牌-路名指示限速限高牌-厂家加工交通标牌铝板半成品毛坯-上海吕盟铝业有限公司 | 指挥调度|调度系统|应急指挥调度|应急指挥|可视化调度|多媒体指挥调度|融合通信|综合调度|应急指挥系统|IP调度系统-北京瑞光极远数码科技有限公司 | 指纹锁_智能锁_指纹密码锁_智能锁十大品牌_智能门锁厂家-深圳市豪力士智能科技有限公司 | 精密铸造,精密铸件,不锈钢铸造,不锈钢铸件-常州鸿雁行机械科技有限公司 | 无锡市钧辉机械制造有限公司| 全通径焊接球阀_全焊接球阀「生产厂家」批发-浙江信合阀门有限公司 | 四字成语大全6000个,经典成语大全及解释,1000个50000个成语及解释 - 同鑫成语网 | 亚洲一区日韩一区欧美一区a,中文字幕乱妇无码AV在线,欧美日韩免费在线观看,国产精品一区二区三区免费,日韩精品免费一线在线观看,日韩一本在线,国产呦精品一区二区三区下载,国产日韩精品一区二区在线观看,欧美日韩高清一区二区三区,日韩在线免费观看视频,欧美日韩一区在线观看 | 郑州阳光房|封阳台|钢结构【河南郑州如意阳光房门窗有限公司】 | 西安测试仪-西安电压测试仪-西安电流测试仪-西安热油汽水测试仪-西安阻抗测试仪-西安时间速度测试仪-西安电力设备厂家-西安中洲电力设备有限公司 | 专利申请|知识产权贯标|商标提异议|国外专利申请-润平知识产权 | 上海联锐精密机械有限公司-【官网】| 离婚协议书怎么写_离婚协议书模板标准版_离婚协议书范本下载 - 离婚协议书 | 真人外教一对一_在线英语培训_成人英语培训【春喜外语学习官网】 | 实验升降炉-箱式管式炉- 台车真空炉-熔块旋转炉-推板隧道窑-洛阳鲁威窑炉有限公司 | 长春互联网运营值选星广传媒,长春短视频运营,长春新媒体运营,长春互联网运营,长春抖音运营,吉林视频号代运营,吉林快手代运营,短视频推广公司,公众号运营,微博运营,新媒体运营 | 微EAM - EHS安全管理系统-设备管理系统-设备全生命周期管理软件-HSE安全管理软件 | 泰安led显示屏-泰安户外裸眼3D显示屏-扩声系统-舞台灯光机械-电子屏-肥城宁阳新泰东平-泰安市奇美特电子有限公司 | 郑州天恩石油机械有限公司| 趣看科技-视频新媒体技术一体化专业服务商 | 千家网-智能建筑与智能家居产品解决方案平台| 山东日兴新材料股份有限公司 | 乌鲁木齐万疆通管道设备有限公司 销售热线;13565955557-新疆 乌鲁木齐 万疆通 管道设备 波纹补偿器 膨胀节 金属软管 伸缩器 管件 阀门 维修 | 延吉新闻网 - 未来之选·就是延吉 [YanJinews.com] | 线性排水沟-成品排水沟-树脂排水沟-树脂混凝土,缝隙式排水沟-时利和 | 上海物业管理_写字楼物业管理_厂房物业管理_上海企福物业管理有限公司 | 深圳货柜租赁_集装箱出售/租赁_集装箱改造_鹏泰集装箱 | 热水工程|空气能热水工程|超低温采暖工程|太阳能热水工程|空气源热泵厂家|炬邦热能设备有限公司 热熔钻孔机【优质厂家】_多年热熔钻设备研发制造经验 | 液压支架配件|液压支架立柱|液压支架千斤顶|液压支架换向阀|液压支架乳化油|液压支架密封件-山东卓力生产厂家 | 啤酒厂家_啤酒代工厂_原浆啤酒厂家 - 山东十谷啤酒有限公司 | 自恢复保险丝_贴片保险丝_插件保险丝_力特保险丝_力特经销商_SMD贴片保险丝_一次性保险丝厂家—深圳市集电通实业有限公司 | 千斤顶-超薄电动千斤顶-电动液压千斤顶-液压螺母扳手-泰州杰克液压机械制造有限公司 |