安装

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;
}

lcobucci/jwt的安装和使用的更多相关文章

  1. Adding basic files · lcobucci/jwt@aad22ed · GitHub

    Skip to content   Features Business Explore Marketplace Pricing   This repository Sign in or Sign up ...

  2. Laravel 中使用 JWT 认证的 Restful API

    Laravel 中使用 JWT 认证的 Restful API 5天前/  678 /  3 / 更新于 3天前     在此文章中,我们将学习如何使用 JWT 身份验证在 Laravel 中构建 r ...

  3. JWT(Json Web Token)初探与实践

    前言什么是JWT?为什么使用JWT?什么时候使用JWT?JWT的基本结构HeaderPayloadSignature将他们放在一起项目实践JWT后端前端关于安全性总结参考 协议标准:https://t ...

  4. JWT在PHP使用及问题处理

    官网 https://jwt.io/ 3.0版本 https://github.com/lcobucci/jwt 安装 composer require lcobucci/jwt 依赖 PHP 5.5 ...

  5. JWT token 跨域认证

    JSON Web Token(缩写 JWT),是目前最流行的跨域认证解决方案. session登录认证方案:用户从客户端传递用户名.密码等信息,服务端认证后将信息存储在session中,将sessio ...

  6. 基于JWT的Token登录认证

    1.JWT简介   JSON Web Token(缩写 JWT),是目前最流行的跨域认证解决方案. 2.JWT的原理        JWT的原理是,服务器认证以后,生成一个JSON格式的对象,发回给客 ...

  7. 从有状态应用(Session)到无状态应用(JWT),以及 SSO 和 OAuth2

    不管用哪种方式认证用户,都可能被中间人攻击窃取 SessionID 或 Token,从而发生 CSRF 攻击.解决方式就是全站 HTTPS.现在 Let's Encrypt 已经支持免费的通配符 HT ...

  8. CodeIgniter 技巧 - 通过 Composer 安装 CodeIgniter 框架并安装依赖包

    PHP 项目中,通过 Composer 来管理各种依赖包,类似 Java 中的 Maven,或 Node 中的 npm.CodeIgniter 框架要想通过 Composer 自动加载包也很简单,步骤 ...

  9. API安全验证之JWT(JSON WEB TOKEN) OLCMS

    假如www.olcms.com/getUserInfo获取用户信息,你怎么知道当前用户是谁?有人说登陆时候我把他UID写入session了,如果是API接口,没有session怎么办,那么就需要把UI ...

随机推荐

  1. 小齐读者拿到快手、百度、网易等 offer 的独门秘籍!

    小齐说: 这篇文章来自读者冰红茶,他刚结束了秋招,拿了很多家 offer. 和他聊完之后,我觉得他的备考思路也完全适用于美国的面试,只是分值要调整一下,但是具体每一块的内容,地球村通用.所以分享给大家 ...

  2. 第三方模块Gulp

    1.第三方模块Gulp 基于node平台开发的前端构建工具. 将机械化操作编写成任务,想要执行机械化操作时执行一个命令,命令任务就能自动执行了.提高开发效率. 1)Gulp使用 ① 使用npm ins ...

  3. github拉去代码慢的处理方式(最简单)

    https://github.com/xxx/xxxx 替换成 https://github.com.cnpmjs.org/xxx/xxxx 再去拉取,速度快很多,亲测可用

  4. 解决python3 ,ModuleNotFoundError: No module named 'pip'问题

    今天想要装一下PyYmal第三方库来写一下Python的desired_caps.yaml文件,候发现cmd窗口下无法执行pip命令, 出现了:ModuleNotFoundError: No modu ...

  5. ReentrantReadWriterLock源码(state设计、读写锁、共享锁、独占锁及锁降级)

    ReentrantReadWriterLock 读写锁类图(截图来源https://blog.csdn.net/wangbo199308/article/details/108688148) stat ...

  6. 洛谷题解 P1051 【谁拿了最多奖学金】

    其实很水 链接: P1051 [谁拿了最多奖学金] 注意: 看好信息,不要看漏或看错因为信息很密集 AC代码: 1 #include<bits/stdc++.h>//头文件 2 using ...

  7. #2020征文-手机#深鸿会深大小组:HarmonyOS手机游戏—数字华容道

    目录: 前言 概述 正文 创建项目 实现初始界面布局 实现数字的随机打乱 实现滑动或点击调换数字 实现游戏成功界面 结语 源码包 前言 12月16号HarmonyOS2.0手机开发者Beta版已经发布 ...

  8. python 批量压缩手机视频

    先安装ffmpeg pip install ffmpeg-python -i https://pypi.tuna.tsinghua.edu.cn/simple 下面是代码,新建video_compre ...

  9. Windows Server 2016介绍与安装

    版本介绍 Windows Server 2016 Essentials edition Windows Server 2016 Essentials版是专为小型企业而设计的.它对应于Windows S ...

  10. STM32F103的CAN结构体学习

    使用STM32F103的CAN通信就是用这4个结构体函数,把他们理解透了,CAN就好用了 CAN的结构体定义在stm32f10x_can.h里面 /************************** ...