<?php
namespace tool\token;
use Lcobucci\JWT\Builder;
use Lcobucci\JWT\Parser;
use Lcobucci\JWT\Signer\Hmac\Sha256;
use Lcobucci\JWT\ValidationData;
class Token
{
public static function enToken($id){
$signer = new Sha256();
$time = time();
//发行域名
$token = (new Builder())->issuedBy('http://lvyan.shop')
//接受域名
->canOnlyBeUsedBy('http://lvyan.shop')
//识别
->identifiedBy(1, true)
//发布日期
->issuedAt($time)
//生效时间
->canOnlyBeUsedAfter($time -1)
//过期时间
->expiresAt($time + 86400)
//加密id和签名
->with('uid', $id)->sign($signer,'zhangsan')
->getToken();
return (string)$token;
}
public static function deToken($token){
$user_id=null;
$token = (new Parser())->parse((string) $token);
$data = new ValidationData();
$data->setIssuer('http://lvyan.shop');
$data->setAudience('http://lvyan.shop');
$data->setId(1);
if (!$token->validate($data)) {
return $user_id;
}
$signer = new Sha256();
if (!$token->verify($signer, 'zhangsan')) {
//签名验证失败
return $user_id;
}
//从token中获取用户id
$user_id = $token->getClaim('uid');
return $user_id;
}
}
composer 代码
composer require lcobucci/jwt 3.3
本篇文章没有封装$_SERVER头部取出部分,必须进行传值。