JWT在PHP中的简单使用示例

官网 https://jwt.io/
3.0版本 https://github.com/lcobucci/jwt

安装

composer require lcobucci/jwt

依赖

  • PHP 5.5+ (v3.2) and PHP 7.1 (v4.x)
  • OpenSSL Extension

示例

获取token

<?php

use \Lcobucci\JWT\Builder;
use \Lcobucci\JWT\Signer\Hmac\Sha256;

include "../vendor/autoload.php";

$builder = new Builder();
$signer  = new Sha256();

$secret = "suspn@)!*";

//设置header和payload,以下的字段都可以自定义
$builder->setIssuer("suspn.com") //发布者
        ->setAudience("suspn.com") //接收者
        ->setId("abc", true) //对当前token设置的标识
        ->setIssuedAt(time()) //token创建时间
        ->setExpiration(time() + 60) //过期时间
        ->setNotBefore(time() + 5) //当前时间在这个时间前,token不能使用
        ->set('uid', 30061); //自定义数据

//设置签名
$builder->sign($signer, $secret);
//获取加密后的token,转为字符串
$token = (string)$builder->getToken();
var_dump($token);

验证token

<?php

use \Lcobucci\JWT\Parser;
use \Lcobucci\JWT\Signer\Hmac\Sha256;

include "../vendor/autoload.php";

$signer  = new Sha256();

$secret = "suspn@)!*";

//获取token
$token = isset($_SERVER['HTTP_AUTHORIZATION']) ? $_SERVER['HTTP_AUTHORIZATION'] : '';

if (!$token) {
    invalidToken('Invalid token');
}

try {
    //解析token
    $parse = (new Parser())->parse($token);
    //验证token合法性
    if (!$parse->verify($signer, $secret)) {
        invalidToken('Invalid token');
    }

    //验证是否已经过期
    if ($parse->isExpired()) {
        invalidToken('Already expired');
    }

    //获取数据
    var_dump($parse->getClaims());

} catch (Exception $e) {
    //var_dump($e->getMessage());
    invalidToken('Invalid token');
}

function invalidToken($msg) {
    header('HTTP/1.1 403 forbidden');
    exit($msg);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 是什么 如果你知道yum、apt-get、npm、bower等命令中的一种或者多种,那么,你也能很快知道compo...
    旱魃一样阅读 8,397评论 0 9
  • awesome-php 收集整理一些常用的PHP类库, 资源以及技巧. 以便在工作中迅速的查找所需... 这个列表...
    guanguans阅读 10,113评论 0 34
  • 原文在:http://www.king-liu.net, 不知道为什么这里不能全部保存?? Github 上一些关...
    lkinga7阅读 12,705评论 5 117
  • 其实只是想玩一场游戏而已,哪有什么意义?关于爱情,特别是异地恋,我觉得有很多能说的,但却没有什么可以说得明白的。不...
    秋燃讲故事阅读 3,508评论 0 0
  • 54个效应 对比效应(温水和冷水) 从众效应(原始生存必备) 光芒效应(明星的优点让你忽略他的缺点) 互惠原理(礼...
    众叶方成林阅读 2,578评论 0 0

友情链接更多精彩内容