本文实例讲述了TP5框架中使用JWT的方法。共享给大家供大家参考,详细如下:

可以直接去github上下载,也可以使用composer

使用composer的话要保证你的电脑上安装了composer,进入项目根目录下载即了,自动会放在vendor目录下

创建文件

我是放在common目录下

使用教程

github都有的

贴源代码

JWTAuth.php

namespace app\common\Auth;

use \Lcobucci\JWT\Builder;

use \Lcobucci\JWT\Signer\Hmac\Sha256;

use \Lcobucci\JWT\Parser;

use \Lcobucci\JWT\ValidationData;

/**

* 单例项目

*/

class JWTAuth

{

private static $instance;

/**

* JWT TOKEN

* @var [type]

*/

private $token;

/**

* 颁发

* @var string

*/

private $iss = 'api.test.com';

/**

* 接收

* @var string

*/

private $aud = 'app.com';

private $uid;

private $secrect="#$%#$%*&^(*(*(";

private $decodeToken;

public static function getInstance() {

if(is_null(self::$instance)) {

self::$instance = new self();

}

return self::$instance;

}

private function __contruct(){

}

private function __clone(){

}

public function encode(){

$time = time();

$this->token = (new builder())->setHeader('alg','HS256')

->setIssuer($this->iss)

->setAudience($this->aud)

->setIssuedAt($time) //生效时间

->setExpiration($time + 20)//过期时间

->set('uid',$this->uid)

->sign(new Sha256(), $this->secrect)//加密算法

->getToken();

return $this;

}

public function getToken(){

return (string)$this->token;

}

public function setToken($token){

$this->token = $token;

return $this;

}

/**

* 用户信息uid

* @param [type] $uid [description]

*/

public function setUid($uid){

$this->uid = $uid;

return $this;

}

public function jsonDecode(){

$token = $this->token;

$this->decodeToken = (new Parser())->parse((string) $token);

// echo $this->decodeToken->getClaim('uid');

return $this->decodeToken;

}

/**

* 验证令牌是否有效

* @return [type] [description]

*/

public function validate(){

$data = new ValidationData();

$data->setIssuer($this->iss);

$data->setAudience($this->aud);

return $this->jsonDecode()->validate($data);

}

/**

* 签名来验证令牌在生成后是否未被改

* @return [type] [description]

*/

public function verify(){

$result = $this->jsonDecode()->verify(new Sha256(), $this->secrect);

return $result;

}

}

user.php 用来测试

namespace app\index\controller;

use app\common\Auth\JWTAuth;

class User{

public function login(){

$jwtAuth = JWTAuth::getInstance();

$token = $jwtAuth->setUid(1)->encode()->getToken();

echo $token;

// var_dump(success_json_data(['token'=>$token]));

}

public function check_login(){

$jwtAuth = JWTAuth::getInstance();

$jwtAuth->setToken('eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJhcGkudGVzdC5jb20iLCJhdWQiOiJhcHAuY29tIiwiaWF0IjoxNTU2MDk1MDI5LCJleHAiOjE1NTYwOTUwNDksInVpZCI6MX0.oi4rLbQFNZUJsW4fVHWiOQxfEmomuvldAV-gFKl2V74');

if($jwtAuth->validate() && $jwtAuth->verify()){

echo '验证成功';

}else{

echo '登陆过期';

}

}

}

最后

jwt本身的话是不带token刷新版方法,所以一旦token过期,客户端就要重新版登陆。

希望本文所述对大家使用TP框架的PHP程序设计有所帮助。

jwt php tp5,TP5框架中使用JWT的方法示例相关推荐

  1. TP5.1框架中百度富文本编辑器UEditor的使用

    在实际项目开发中最常使用到的工具之一就是富文本编辑器,使用富文本编辑器可以实现所见即所得的效果,且所有富文本编辑器里的内容(包括图片,视频,音乐等文件)全部可以带格式的存入数据库中且只需占用一个字段. ...

  2. 关于Scrapy爬虫框架中meta参数的使用示例演示(下)

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 络纬秋啼金井阑,微霜凄凄簟色寒. ...

  3. python grpc 并发_在Python中使用gRPC的方法示例【h】

    本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下: 使用Protocol Buffers的跨平台RPC系统. 安装 使用 pip gRPC由两个部分构成,grpcio 和 gRP ...

  4. python中使用grpc方法示例_在Python中使用gRPC的方法示例

    本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下: 使用Protocol Buffers的跨平台RPC系统. 安装 使用 pip pip install grpcio pip i ...

  5. go语言字符串换行_Go语言中的字符串处理方法示例详解

    1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号(" ...

  6. delphi接口带上请求头是什么意思_Gin框架中使用JWT进行接口验证

    背景: 在如今前后端分离开发的大环境中,我们需要解决一些登陆,后期身份认证以及鉴权相关的事情,通常的方案就是采用请求头携带token的方式进行实现.本篇文章主要分享下在Golang语言下使用jwt-g ...

  7. SSH框架中配置log4j的方法

    /*2011年8月29日 09:52:54 by Rush*/ SSH框架中使用log4j的方便之处 1. 动态的改变记录级别和策略,即修改log4j.properties,不需要重启Web应用,这需 ...

  8. TP框架中S函数使用方法

    TP框架中S函数使用步骤: //初始化 type为缓存方式;prefix为缓存前缀标示,也就是名字;expire为生存周期  //我这里设置缓存方式为xcache,名字ticket,周期7100秒 c ...

  9. php yii框架连接数据库,Yii 框架使用数据库(databases)的方法示例

    本文实例讲述了Yii 框架使用数据库(databases)的方法.分享给大家供大家参考,具体如下: 配置数据库连接 ¶ 开始之前,请确保你已经安装了 PHP PDO 扩展和你所使用的数据库的 PDO ...

最新文章

  1. 【教程】TestComplete测试桌面应用程序教程(四)
  2. aws iot 连接时间_AWS IoT Core 定价
  3. 冒泡排序html代码,冒泡排序.html
  4. ITK:预定义操作以对应两个图像中的像素
  5. 复位 stm32_分析一个关于STM32 芯片异常复位的经典案例!
  6. PHP 多维数组转json对象
  7. 内存heap_哪个内存更快?Heap或ByteBuffer或Direct?
  8. shell 相关知识(1)
  9. centos gradle 安装
  10. 【笔试/面试】—— 奇葩 C/C++ 语法题
  11. Android 仿qq 点赞功能
  12. Python图像处理丨基于OpenCV和像素处理的图像灰度化处理
  13. 一种简单的不净观(女人)方法,帮助看破色欲
  14. java毕业设计物流跟踪系统mybatis+源码+调试部署+系统+数据库+lw
  15. 心形一行python_《心》字意思读音、组词解释及笔画数 - 新华字典 - 911查询
  16. 目标跟踪 OP,CLE,DP,AUC的概念和计算
  17. 关于批量添加用户和域用户
  18. Matlab中reshape函数的使用
  19. VS2022 MAUI Hello World——Windows平台及Android平台效果
  20. 全国计算机三级网络技术电子版,全国计算机三级网络技术最新版笔试电子教材(完全免费版).doc...

热门文章

  1. php之微型博客创建,php之微型博客的创建
  2. mysql8.0安装问题
  3. 【rocketMQ】1、搭建MQ服务器,生产一个订单与消费一个订单
  4. Codeforces 576D. Flights for Regular Customers(倍增floyd+bitset)
  5. silverlight游戏在坑内发展
  6. hello !CNBLOG
  7. easyui layout 收缩的bug
  8. sql/c#十六进制与十进制的转换
  9. EntLib 3.1学习笔记(2) : Data Access Application Block
  10. 有感于那个拣了两年馒头的女生~~