php JWT使用

1 篇文章 0 订阅

composer 下载: 

composer require lcobucci/jwt

参数解释
在使用之前先解释下上面参数的意思:

名称    解释
iss (issuer)    issuer 请求实体,可以是发起请求的用户的信息,也可是jwt的签发者
sub (Subject)    设置主题,类似于发邮件时的主题
aud (audience)    接收jwt的一方
exp (expire)    token过期时间
nbf (not before)    当前时间在nbf设定时间之前,该token无法使用
iat (issued at)    token创建时间
jti (JWT ID)    对当前token设置唯一标示
 

<?php

require 'vendor/autoload.php';
use Lcobucci\JWT\Builder;
use \Lcobucci\JWT\Signer\Hmac\Sha256;
use Lcobucci\JWT\Parser;

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


$secret = "51talk@)!*";
 
//设置header和payload,以下的字段都可以自定义
$builder->setIssuer("51talk.com") //发布者
        ->setAudience("51talk.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)


?>
<?php
 
use Lcobucci\JWT\Parser;
use Lcobucci\JWT\Signer\Hmac\Sha256;
 
require 'vendor/autoload.php';
 
$signer  = new Sha256();
 
$secret = "51talk@)!*";
 
//获取token
$token = isset($_SERVER['HTTP_AUTHORIZATION']) ? $_SERVER['HTTP_AUTHORIZATION'] : '';
 $token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiIsImp0aSI6ImFiYyJ9.eyJpc3MiOiI1MXRhbGsuY29tIiwiYXVkIjoiNTF0YWxrLmNvbSIsImp0aSI6ImFiYyIsImlhdCI6MTU5NDk5Njg2NCwiZXhwIjoxNTk0OTk2OTI0LCJuYmYiOjE1OTQ5OTY4NjksInVpZCI6MzAwNjF9.5uWluExF8_6oB9AyG08-P2FXF1jQrixad54vh97QsqQ";
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');
    }
 
    //获取数据
	echo '<pre>';
	$a = $parse->getClaims();
	echo $a['uid'];
    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);
}

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值