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 ...
随机推荐
- element ui中表单循环项的校验
注意:prop是动态的
- 【APIO2019】路灯(ODT & (树套树 | CDQ分治))
Description 一条 \(n\) 条边,\(n+1\) 个点的链,边有黑有白.若结点 \(a\) 可以到达 \(b\),需要满足 \(a\to b\) 的路径上的边不能有黑的.现给出 \(0\ ...
- sql语句执行次序
from→on→join→where→group by→having→select→distinct→order by→limit
- 廖雪峰官网学习js 数组
indexOf( ) 某字符的位置 slice 相当于string 的substring 切片 a = ['a','b',1,2,3] (5) ["a", "b&q ...
- 2. 使用Shell能做什么
批处理 在批处理的过程中,能够实现脚步自动化,比GUI自动化速度高效 日常工作场景 服务端测试 移动端测试 持续集成与自动化部署,这是最最场景的场景,可以说离开了shell,持续集成和自动化部署也会遇 ...
- js下 Day17、综合案例
一.面向对象轮播 效果图:
- metinfo小于v6.2.0版本SQL盲注利用脚本
#coding=utf-8 import requests import re import sys import time #获取config_safe.php中的 key def getKey(u ...
- UWP ListView添加不同样式
先看效果: 使用ListView的ItemTemplateSelector <ListView IsItemClickEnabled="True" ItemContainer ...
- 中小学生的噩梦:怎样用Python检测抄袭行为?广大中小学生们的美梦就此结束
本教程将介绍如何使用机器学习技术(如word2vec和余弦相似度等),在Python中用几行代码制作抄袭检测器.搭建完成后,抄袭检测器将会从文件中载入学生们的作业,然后通过计算相似度来判断学生有无相互 ...
- 回顾 2020 年 GitHub 的大事件,你知道多少?
作者:HelloGitHub-小鱼干 这里是 HelloGitHub 出品的年度盘点系列,本期我们将盘点 GitHub 在 2020 发生的大事件,回顾一下今年 GitHub 给我们带来了那些惊喜.故 ...