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

相关文章

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

SpringSecurity JWT基于令牌的无状态认证实现

《SpringSecurityJWT基于令牌的无状态认证实现》SpringSecurity中实现基于JWT的无状态认证是一种常见的做法,本文就来介绍一下SpringSecurityJWT基于令牌的无... 目录引言一、JWT基本原理与结构二、Spring Security JWT依赖配置三、JWT令牌生成与

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为