lcobucci/jwt的安装和使用
2024-09-03 09:25:03
安装
composer require lcobucci/jwt 3.3
封装
<?php
namespace tools\jwt;
use Lcobucci\JWT\Builder;
use Lcobucci\JWT\Signer\Key;
use Lcobucci\JWT\Signer\Hmac\Sha256;
use Lcobucci\JWT\ValidationData;
use Lcobucci\JWT\Parser;
class Token
{
static private $_config=[
'audience' => 'http://127.0.0.1/token',//接收人
'id' => '1806',//token的唯一标识,这里只是一个简单示例
'sign' => 'Mr.cao',//签名密钥
'issuer' => 'http://127.0.0.1/user_id',//签发人
'expire' => 3600*2 //有效期
];
//生成token
static public function getToken($k,$v)
{
$signer = new Sha256();
$time = time();
$token = (new Builder())->issuedBy(self::$_config['issuer']) // 签发人
->permittedFor(self::$_config['audience']) // 接收人
->identifiedBy(self::$_config['id'], true) // 唯一标识 可以自己写,也可以随机生成
->issuedAt($time) // 签发时间
->canOnlyBeUsedAfter($time - 1) // 生效时间
->expiresAt($time + 3600) // 过期时间
->withClaim($k, $v) // 用户id
->getToken($signer, new Key(self::$_config['sign'])); // 生成token
return (string)$token;
}
//验证token
static public function verifyToken($token)
{
$signer = new Sha256();
$token = (new Parser())->parse((string) $token);
$data = new ValidationData();
//验证签发人
$data->setIssuer(self::$_config['issuer']);
//验证接收人
$data->setAudience(self::$_config['audience']);
//验证唯一表示
$data->setId(self::$_config['id']);
//签发人 和上述验证
if($token->verify($signer, self::$_config['sign']) && $token->validate($data)){
return true;
}else{
return false;
}
}
//从token中获取信息
static public function getUserId($token,$k)
{
$res = self::verifyToken($token);
if (!$res){
return '无效的token';
}
$token = (new Parser())->parse((string)$token);
return $token->getClaim($k);
}
}
使用
use tools\jwt\Token; //封装命名空间\类
//生成token
public function getToken(){
$token = Token::getToken(5);
return $token;
}
//测试token
public function testToken(Request $request){
//接收token
$token = $request->param('token');
$data = Token::getTokenMessege($token);
return $data;
}
最新文章
- Opencv算法学习二
- 十一个行为模式之备忘录模式(Memento Pattern)
- android 模拟器上网问题
- 这回真的是挤时间了-PHP基础(三)
- phpcms模块开发简易教程
- 【收藏】android WebView总结
- 基于SSH2框架Struts2拦截器的登录验证实现(转)
- IQ一个人的智力和对科学知识的理解掌握程度。 EQ对环境和个人情绪的掌控和对团队关系的运作能力。 AQ挫折商 一个人面对困境时减除自己的压力、渡过难关的能力。
- 第8条:覆盖equals时遵守通用约定
- BZOJ3210: 花神的浇花集会
- javascript函数定义表达式和函数声明的区别
- React 入门最好的实例-TodoList
- C++ 面向对象学习2 构造方法
- cinder /etc/lvm/lvm.conf 注意点
- 如何让局域网内的其他电脑访问本机的mysql
- [BZOJ1007] [HNOI2008] 水平可见直线 (凸包)
- ZJOI 2019 游记
- TCP/IP 三次握手
- 针对监控摄像机(海康、大华等)录像 .h264 文件的流媒体播放设计
- CentOS7用yum快速搭建LAMP平台
热门文章
- 《图解TCP/IP》笔记
- [Python] 快速爬取当前城市所有租房网站房源及配置,一目了然
- bilibili插件推荐
- 女朋友突然问我DNS是个啥....
- postgresql修改postgres用户密码
- JVM虚拟机(三):Java内存区域
- 记:create-react-app暴露配置报错
- vue第一单元(初识webpack-webpack的功能-webpack的初步使用)
- Java源码赏析(六)Class<;T>; 类
- YZMCMS V5.3后台 SSRF