当前位置: 首页 > news >正文

学习php中使用composer下载安装firebase/php-jwt 以及调用方法

学习php中使用composer下载安装firebase/php-jwt 以及调用方法

    • 1、安装firebase/php-jwt
    • 2、封装jwt类

1、安装firebase/php-jwt

composer require firebase/php-jwt

安装好以后出现以下文件:

在这里插入图片描述

2、封装jwt类

根据所使用的php框架,在指定目录创建 Token.php

<?php
use Firebase\JWT\JWT;
use Firebase\JWT\Key;
class Token
{const SECRET = 'hello';//密钥//创建tokenstatic public function create_token($uid = 1){$payload = ['iss' => 'pyg',                //签发人(官方字段:非必需)'exp' => time() + 3600,     //过期时间(官方字段:非必需)'aud' => 'admin',              //接收人(官方字段:非必需)'nbf' => time(),               //生效时间(官方字段:非必需)'iat' => time(),               //签发时间(官方字段:非必需)'admin_id' => $uid,        //自定义字段(用户id)];$token = JWT::encode($payload, self::SECRET, 'HS256');return $token;}//验证tokenstatic public function verify_token($token){try {// $decoded = JWT::decode($jwt, new Key($key, 'HS256'));$Result = JWT::decode($token, new Key(self::SECRET, 'HS256'));return true;}  catch(\Firebase\JWT\SignatureInvalidException $e) {  //签名不正确echo $e->getMessage();}catch(\Firebase\JWT\BeforeValidException $e) {  // 签名在某个时间点之后才能用echo $e->getMessage();}catch(\Firebase\JWT\ExpiredException $e) {  // token过期echo $e->getMessage();}catch(Exception $e) {  //其他错误echo $e->getMessage();}}
}

封装好以后 下面是登录控制器

public function loginCheck(){$req = request()->param();// halt($req);// 接收工号和密码$uname = trim(input('uname'));$password = trim(input('password'));//   halt($password);// 工号和密码不能为空if (empty($uname) || empty($password)) {// return '账号或密码不能为空!';return json_encode(['error' => '账号或密码不能为空!']);}//   halt($uname);// 进行账号验证$data = Up::get(['uname'=>$uname]);//   halt($data);if (!$data) {return json_encode(['error' => '工号不存在,请验证后输入!']);}//   halt($password);// 进行密码验证if ($password != $data['password']) {// return '';return json_encode(['error' => '工号和密码不匹配!!']);}// 如果工号和密码匹配,则登录成功这才是重要的 上面代码是验证输入是否有误 并不重要 生成token$token = Token::create_token($data['admin_id']);//   dump($token);// return $token;return json_encode(['token' => $token]);//   session('Uname',$uname);//   $this->success('登录成功!','index/index');}

最后进入其他页面验证token是否正确 我放到了Base控制器 每个页面都验证

<?php
namespace app\index\controller;
use think\Controller;
use Token;class Base extends Controller
{public function _initialize(){$this->verifyToken();}public function verifyToken(){// $token = input('token');$token ='eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJweWciLCJleHAiOjE2NzUxNDk3NzgsImF1ZCI6ImFkbWluIiwibmJmIjoxNjc1MTQ2MTc4LCJpYXQiOjE2NzUxNDYxNzgsImFkbWluX2lkIjoxfQ.bGz-MZwPDkixQQGnQ9iFpX-mZiOohJehuf114rc9zQA';$res = Token::verify_token($token);halt($res);//这里可以来判断 是否跳到登录页面}
}

token我直接写上去了 ,只为演示用,项目里是从客户端获取的来比对

相关文章:

学习php中使用composer下载安装firebase/php-jwt 以及调用方法

学习php中使用composer下载安装firebase/php-jwt 以及调用方法 1、安装firebase/php-jwt2、封装jwt类 1、安装firebase/php-jwt composer require firebase/php-jwt安装好以后出现以下文件: 2、封装jwt类 根据所使用的php框架&#xff0c;在指定目录创建 Token.php <?ph…...

『TypeScript』深入理解变量声明、函数定义、类与接口及泛型

&#x1f4e3;读完这篇文章里你能收获到 了解TypeScript变量声明与类型注解掌握TypeScript函数与方法的使用掌握TypeScript类与接口的使用掌握TypeScript泛型的应用 文章目录 一、变量声明与类型注解1. 变量声明2. 类型注解3. 类型推断 二、函数与方法定义1. 函数定义2. 方法定…...

如何优雅使用 vue-html2pdf 插件生成pdf报表

使用 vue-html2pdf 插件 业务背景&#xff0c;老板想要一份能征服客户的pdf报表&#xff0c;传统的pdf要手撕&#xff0c;企业中确实有点耗费时间&#xff0c;于是github上面看到开源的这个插件就…废话不多说&#xff0c;直接上教程 1.使用下面命令安装 vue-html2pdf npm i…...

C语言第十六集(前)

1.关于那个整形存储入char的 是先取好补码,再截断 例: 2.%u是以十进制的形式打印无符号整数 3.注意(背):存储的char类型变量的补码为10000000的直接解析为-128 4.signed char 类型的变量取值范围是-128~127 5.unsigned char 类型的变量取值范围是0~255 6.有符号类型的变量…...

Makefile语法

一、Makefile规则格式 Makefile 里面是由一系列的规则组成的&#xff0c;这些规则格式如下&#xff1a; 目标…... : 依赖文件集合…… 命令 1 命令 2 ……参考上一节gcc编译器与Makefile入门参考这条规则 1 main: main.o input.o calcu.o2 gcc -o main main.o input.o c…...

用户案例|Milvus 助力 Credal.AI 实现 GenAI 安全与可控

AIGC 时代&#xff0c;企业流程中是否整合人工智能&#xff08;AI&#xff09;对于的企业竞争力至关重要。然而&#xff0c;随着 AI 不断发展演进&#xff0c;企业也在此过程中面临数据安全管理、访问权限、数据隐私等方面的挑战。 为了更好地解决上述问题&#xff0c;Credal.A…...

MySQL三 | 多表查询

目录 多表查询 内连接 隐式内连接 显示内连接 外连接 左外连接 右外连接 自连接 子查询 多表查询 笛卡尔积:集合A和集合B的所有组合情况 A * B 在多表查询时应消除无效的笛卡尔积 内连接 查询的是两张表交集的地方 隐式内连接 SELECT 字段列表 FROM 表1&#xf…...

PostgreSQL 索引介绍和使用事项

索引内容 关键点 索引是一种数据结构&#xff0c;用于加快数据库查询的速度。它类似于书籍的目录&#xff0c;可以快速定位到特定的数据页。 PG数据库支持多种类型的索引&#xff0c;包括B树索引、哈希索引、GiST索引、SP-GiST索引和GIN索引等。 B树索引是PG数据库中最常用的…...

MySQL注入攻防详解:保障数据库安全的最佳实践

引言 MySQL作为广泛使用的关系型数据库&#xff0c;其安全性一直备受关注。然而&#xff0c;MySQL注入攻击是一种常见而危险的安全漏洞&#xff0c;攻击者通过巧妙构造的输入&#xff0c;可以绕过应用程序的验证&#xff0c;执行恶意的SQL语句&#xff0c;导致数据泄露、篡改或…...

ubuntu or MacOS 源码安装 fmt fmtlib

1&#xff0c;前情 提醒这个源代码需要从release中下载 打包好的&#xff0c;而直接用git clone下载不了&#xff0c;可能github上的这个git clone的链接仅仅是给fmt lib的开发者使用的吧&#xff1b; 下载fmtlib的release源代码u下载fmtlib的release源代码 2&#xff0c;解压编…...

vue watch

vue 使用watch监听props的一些小建议 当在watch里面给data赋值&#xff0c;请使用深拷贝。 <template><div class"container"><div class"left"><div class"button_group"><!-- <button click"rand…...

异常检测 | 基于孤立森林(Isolation Forest)的数据异常数据检测(结合t-SNE降维可视化)

异常检测 | MATLAB实现基于孤立森林的数据异常检测 目录 异常检测 | MATLAB实现基于孤立森林的数据异常检测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现基于孤立森林(Isolation Forest)的数据异常数据检测可视化&#xff08;完整源码和数据) 基于孤立森林(…...

【深度学习】一维数组的聚类

在学习聚类算法的过程中&#xff0c;学习到的聚类算法大部分都是针对n维的&#xff0c;针对一维数据的聚类方式较少&#xff0c;今天就来学习下如何给一维的数据进行聚类。 方案一&#xff1a;采用K-Means对一维数据聚类 Python代码如下&#xff1a; from sklearn.cluster im…...

100多种视频转场素材|专业胶片,抖动,光效电影转场特效PR效果预设

100多种 Premiere Pro 效果预设&#xff0c;包含&#xff1a;“胶片框架”、“胶片烧录”、“彩色LUT”、“相机抖动”、“电影Vignette”和“胶片颗粒”。非常适合制作复古风格的视频&#xff0c;添加独特的色彩。包括视频教程。 来自PR模板网&#xff1a;https://prmuban.com…...

http与apache

目录 1.http相关概念 2.http请求的完整过程 3.访问浏览器背后的原理过程 4.动态页面与静态页面区别 静态页面&#xff1a; 动态页面&#xff1a; 5.http协议版本 6.http请求方法 7.HTTP协议报文格式 8.http响应状态码 1xx&#xff1a;提示信息 2xx&#xff1a;成功…...

一、服务器准备

本案例使用VMware Workstation Pro虚拟机创建虚拟服务器来搭建Linux服务器集群&#xff0c;所用软件及版本如下&#xff1a; Centos7.7-64bit 1、三台虚拟机创建 第一种方式&#xff1a;通过iso镜像文件来进行安装(不推荐) 第二种方式&#xff1a;直接复制安装好的虚拟机文…...

区块链optimism主网节点搭建

文章目录 官方参考资料编译环境搭建编译Optimism Monorepo编译op-geth 执行下载数据快照生成op-geth和op-node通信密钥op-geth执行脚本 op-node执行脚本 启动日志op-gethop-node 本文是按照官方参考资料基于源码的方式成功搭建optimism主网节点。 官方参考资料 源码&#xff1…...

Bounding boxes augmentation for object detection

Different annotations formats Bounding boxes are rectangles that mark objects on an image. There are multiple formats of bounding boxes annotations. Each format uses its specific representation of bouning boxes coordinates 每种格式都使用其特定的边界框坐标…...

【计算机网络学习之路】HTTP请求

目录 前言 HTTP请求报文格式 一. 请求行 HTTP请求方法 GET和POST的区别 URL 二. 请求头 常见的Header 常见的额请求体数据类型 三. 请求体 结束语 前言 HTTP是应用层的一个协议。实际我们访问一个网页&#xff0c;都会像该网页的服务器发送HTTP请求&#xff0c;服务…...

java之字符串常用处理函数

在Java中&#xff0c;你可以使用Collections.sort()方法对字符串中的字符进行排序。这个方法会按照字母顺序对字符进行排序。 以下是一个例子&#xff1a; import java.util.Arrays; import java.util.Collections; public class Main { public static void main(…...

从《西部世界》到现实:AI智能体如何重塑游戏NPC与虚拟社会?

从《西部世界》到现实&#xff1a;AI智能体如何重塑游戏NPC与虚拟社会&#xff1f; 当《西部世界》中的NPC开始拥有记忆、情感和自主决策能力时&#xff0c;观众惊叹于科幻与现实的边界正在模糊。如今&#xff0c;大型语言模型&#xff08;LLM&#xff09;驱动的AI智能体正将这…...

Arm Cortex-X2/X3架构解析与性能优化实践

1. Arm Cortex-X2/X3集群架构概述在Armv9架构的高性能计算领域&#xff0c;Cortex-X2和X3代表了当前最先进的CPU设计理念。作为DynamIQ共享单元(DSU)的核心组件&#xff0c;它们通过可配置的缓存层次结构和智能一致性协议&#xff0c;为现代异构计算提供了灵活的解决方案。1.1 …...

如何免费高效优化电脑性能:UXTU终极调优指南

如何免费高效优化电脑性能&#xff1a;UXTU终极调优指南 【免费下载链接】Universal-x86-Tuning-Utility Unlock the full potential of your Intel/AMD based device. 项目地址: https://gitcode.com/gh_mirrors/un/Universal-x86-Tuning-Utility Universal x86 Tuning…...

构建高可用AI模型代理服务:统一接口、智能路由与生产级部署

1. 项目概述&#xff1a;一个无处不在的AI助手接口最近在折腾AI应用开发的朋友&#xff0c;可能都遇到过这样一个痛点&#xff1a;想在自己的项目里快速接入一个靠谱的、能处理复杂对话的AI模型&#xff0c;但要么被OpenAI的API调用限制和网络问题搞得焦头烂额&#xff0c;要么…...

Seraphine终极指南:英雄联盟智能助手如何提升您的游戏胜率

Seraphine终极指南&#xff1a;英雄联盟智能助手如何提升您的游戏胜率 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 在英雄联盟的激烈对局中&#xff0c;错过对局接受、BP阶段犹豫不决、缺乏队友对手信息&a…...

避坑指南:在Unity 2022 LTS中配置XCharts插件时遇到的3个常见问题及解决方法

Unity 2022 LTS中XCharts插件实战避坑手册 当数据可视化成为现代应用的核心需求时&#xff0c;Unity开发者常会选择XCharts这类开源图表插件来快速实现专业级图表展示。但在实际项目落地过程中&#xff0c;版本兼容性、环境配置和平台适配等问题往往会让开发进程意外卡壳。本文…...

Unity区域加载系统:实现开放世界无缝加载与内存优化

1. 项目概述&#xff1a;一个高效、可扩展的Unity区域加载系统 最近在做一个开放世界风格的项目&#xff0c;场景大了之后&#xff0c;加载卡顿和内存管理就成了老大难问题。传统的Unity场景加载&#xff0c;要么一股脑全塞进内存&#xff0c;要么就得自己写一堆脚本来手动控制…...

桌面自动化技能库:基于PyAutoGUI与Selenium的工程化实践

1. 项目概述&#xff1a;一个桌面操作员的技能库最近在GitHub上看到一个挺有意思的项目&#xff0c;叫Marways7/cua_desktop_operator_skill。光看这个名字&#xff0c;可能有点摸不着头脑&#xff0c;但作为一个在自动化运维和桌面支持领域摸爬滚打多年的老手&#xff0c;我立…...

如何在Chrome浏览器中快速生成与解析二维码:Chrome QRCode插件终极指南

如何在Chrome浏览器中快速生成与解析二维码&#xff1a;Chrome QRCode插件终极指南 【免费下载链接】chrome-qrcode :zap: A Chrome plugin to Genrate QRCode of URL / Text, or Decode the QRcode in website. 一个Chrome浏览器插件&#xff0c;用于生成当前URL或者选中内容的…...

Arm Neoverse-V2/V3缓存与内存参数优化指南

1. Arm Neoverse-V2/V3集群架构概述Arm Neoverse系列处理器作为数据中心和基础设施领域的重要计算引擎&#xff0c;其V2/V3代架构在缓存子系统和内存管理方面进行了显著优化。作为从业多年的系统架构师&#xff0c;我认为理解这些处理器的参数配置对性能调优至关重要。Neoverse…...