lcobucci/jwt的安装和使用
安装
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的安装和使用的更多相关文章
- Adding basic files · lcobucci/jwt@aad22ed · GitHub
Skip to content Features Business Explore Marketplace Pricing This repository Sign in or Sign up ...
- Laravel 中使用 JWT 认证的 Restful API
Laravel 中使用 JWT 认证的 Restful API 5天前/ 678 / 3 / 更新于 3天前 在此文章中,我们将学习如何使用 JWT 身份验证在 Laravel 中构建 r ...
- JWT(Json Web Token)初探与实践
前言什么是JWT?为什么使用JWT?什么时候使用JWT?JWT的基本结构HeaderPayloadSignature将他们放在一起项目实践JWT后端前端关于安全性总结参考 协议标准:https://t ...
- JWT在PHP使用及问题处理
官网 https://jwt.io/ 3.0版本 https://github.com/lcobucci/jwt 安装 composer require lcobucci/jwt 依赖 PHP 5.5 ...
- JWT token 跨域认证
JSON Web Token(缩写 JWT),是目前最流行的跨域认证解决方案. session登录认证方案:用户从客户端传递用户名.密码等信息,服务端认证后将信息存储在session中,将sessio ...
- 基于JWT的Token登录认证
1.JWT简介 JSON Web Token(缩写 JWT),是目前最流行的跨域认证解决方案. 2.JWT的原理 JWT的原理是,服务器认证以后,生成一个JSON格式的对象,发回给客 ...
- 从有状态应用(Session)到无状态应用(JWT),以及 SSO 和 OAuth2
不管用哪种方式认证用户,都可能被中间人攻击窃取 SessionID 或 Token,从而发生 CSRF 攻击.解决方式就是全站 HTTPS.现在 Let's Encrypt 已经支持免费的通配符 HT ...
- CodeIgniter 技巧 - 通过 Composer 安装 CodeIgniter 框架并安装依赖包
PHP 项目中,通过 Composer 来管理各种依赖包,类似 Java 中的 Maven,或 Node 中的 npm.CodeIgniter 框架要想通过 Composer 自动加载包也很简单,步骤 ...
- API安全验证之JWT(JSON WEB TOKEN) OLCMS
假如www.olcms.com/getUserInfo获取用户信息,你怎么知道当前用户是谁?有人说登陆时候我把他UID写入session了,如果是API接口,没有session怎么办,那么就需要把UI ...
随机推荐
- 从输入 URL 到页面展示,这中间发生了什么?
当面试官问到,请你说说看"从输入 URL 到页面展示,这中间发生了什么?" 以前的我是这样回答的: 用户输入URL后,向服务器端发起请求.如果顺利,得到网络响应之后,浏览器对资源进 ...
- js 转换为字符串方法
要把一个值转换为一个字符串有两种方法:toString()方法和转型函数String(). toString()方法 数值.布尔值.对象.字符串值(每个字符串都有一个toString()方法,该方法返 ...
- 串口数据监视-Bus Hound
Bus Hound使用说明 一.打开该工具,会看到最上面的六个图标:1.Capture(捕捉按钮):按下它选择捕捉数据界面2.Save(保存按钮):按下它选择保存数据界面3.Setting(设置按钮) ...
- 题解 CF1446D2 【Frequency Problem (Hard Version)】
给出一个跑得快一点的做法,洛谷最优解 (时间是第二名的 \(\frac{1}{2}\)), CF 第一页 D1 首先找到整个序列的众数 \(G\), 很容易证明答案序列中的两个众数中其中一个是 \(G ...
- 【Ubantu 系统显示ip为127.0.0.1 解决办法】
现象:Ubantu : >>>ifconfig Link encap:以太网 硬件地址****************** inet 地址:127.0.0. ...
- AOP基本概念
连接点joinpoint(类中所有方法) 切入点pointcut(缺少共性代码的方法) 通知advice(被抽取的共性功能的代码逻辑,通知有位置区分,也就是从切入点方法中被抽取代码的前面还是后面抽象出 ...
- 精尽Spring MVC源码分析 - HandlerMapping 组件(四)之 AbstractUrlHandlerMapping
该系列文档是本人在学习 Spring MVC 的源码过程中总结下来的,可能对读者不太友好,请结合我的源码注释 Spring MVC 源码分析 GitHub 地址 进行阅读 Spring 版本:5.2. ...
- Java中instanceof注意的地方
instanceof只能用于对象的判断,不能用于基本类型的判断,以下代码会编译不通过 'A' instanceof Character instanceof特有的规则:若左操作数是null,结果就直接 ...
- 推荐系统实践 0x10 Deep Crossing
这一篇,我们将介绍微软BING AD团队提出的Deep Crossing模型,用来解决大规模特征组合问题的模型,这些特征可以是稠密的,也可以是稀疏的,从而避免了人工进行特征组合,并使用了当年提出的残差 ...
- html 02-浏览器的介绍
02-浏览器的介绍 #常见的浏览器 浏览器是网页运行的平台,常见的浏览器有谷歌(Chrome).Safari.火狐(Firefox).IE.Edge.Opera等.如下图所示: 我们重点需要学习的是 ...