TP8 利用jwt 生成token

2024-04-26 16:12
文章标签 生成 token jwt tp8

本文主要是介绍TP8 利用jwt 生成token,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用Composer安装依赖库,终端切换到项目根目录输入如下

composer require firebase/php-jwt

下面是示例代码:

<?php
namespace app\common\base;use Firebase\JWT\JWT;
use Firebase\JWT\Key;class Token
{/*** 创建 token* @param array $data 必填 自定义参数数组* @param integer $exp_time 必填 token过期时间 单位:秒 例子:7200=2小时* @param string $scopes 选填 token标识,请求接口的token* @return string*/public static function createToken($data = "", $exp_time = 0, $scopes = ""){//JWT标准规定的声明,但不是必须填写的;//iss: jwt签发者//sub: jwt所面向的用户//aud: 接收jwt的一方//exp: jwt的过期时间,过期时间必须要大于签发时间//nbf: 定义在什么时间之前,某个时间点后才能访问//iat: jwt的签发时间//jti: jwt的唯一身份标识,主要用来作为一次性token。//公用信息$key = 'api';   //自定义一个key$time = time(); //当前时间$token['iss'] = ''; //签发者 可选$token['aud'] = ''; //接收该JWT的一方,可选$token['iat'] = $time; //签发时间$token['nbf'] = $time; //(Not Before):某个时间点后才能访问,比如设置time+30,表示当前时间30秒后才能使用if ($scopes) {$token['scopes'] = $scopes; //token标识,请求接口的token}if (!$exp_time) {$exp_time = 7200*12;//默认=24小时过期}$token['exp'] = $time + $exp_time; //token过期时间,这里设置2个小时if ($data) {$token['data'] = $data; //自定义参数}$alg = 'HS256'; //签名算法方式
//            $keyId = "keyId"; //这个有时必须要加上,不加上,报错,报错内容:'"kid" empty, unable to lookup correct key'$jwt = JWT::encode($token, $key, $alg);return $jwt; //返回给客户端token信息}/*** 验证token是否有效,默认验证exp,nbf,iat时间* @param string $jwt 需要验证的token* @return string $msg 返回消息*/public static function explainToken($jwt){$key = new Key('api', 'HS256'); // 必须是 Firebase\JWT\Key;的对象JWT::$leeway = 60;//当前时间减去60,把时间留点余地try {$decoded = JWT::decode($jwt, $key);$arr = (array)$decoded;$returndata['code'] = "200";//200=成功$returndata['msg'] = "成功";//$returndata['data'] = $arr;//返回的数据return json_encode($returndata); //返回信息} catch (\Firebase\JWT\SignatureInvalidException $e) {  //签名不正确$returndata['code'] = "101";//101=签名不正确$returndata['msg'] = $e->getMessage();$returndata['data'] = "";//返回的数据return json_encode($returndata); //返回信息} catch (\Firebase\JWT\BeforeValidException $e) {  // 签名在某个时间点之后才能用$returndata['code'] = "102";//102=签名不正确$returndata['msg'] = $e->getMessage();$returndata['data'] = "";//返回的数据return json_encode($returndata); //返回信息} catch (\Firebase\JWT\ExpiredException $e) {  // token过期$returndata['code'] = "103";//103=签名不正确$returndata['msg'] = $e->getMessage();$returndata['data'] = "";//返回的数据return json_encode($returndata); //返回信息} catch (Exception $e) {  //其他错误$returndata['code'] = "199";//199=签名不正确$returndata['msg'] = $e->getMessage();$returndata['data'] = "";//返回的数据return json_encode($returndata); //返回信息}}}

这篇关于TP8 利用jwt 生成token的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/938037

相关文章

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

Python FastAPI实现JWT校验的完整指南

《PythonFastAPI实现JWT校验的完整指南》在现代Web开发中,构建安全的API接口是开发者必须面对的核心挑战之一,本文将深入探讨如何基于FastAPI实现JWT(JSONWebToken... 目录一、JWT认证的核心原理二、项目初始化与环境配置三、安全密码处理机制四、JWT令牌的生成与验证五、

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I