《使用ThinkPHP6开发项目》 - ThinkPHP6使用使用中间件验证登录Token

https://blog.csdn.net/centaury32/article/details/134997438

按照https://blog.csdn.net/centaury32/article/details/134999029的方法验证登录Token,那么每一步都需要写同样一段代码,这里可以结合中间件进行验证

一、创建中间件:php think make:middleware <应用名>@<文件名>

php think make:middleware admin@AdminLogin

#appp\middleware\AdminLogin.php
<?php
declare (strict_types = 1);

namespace app\admin\middleware;

class AdminLogin
{
    /**
     * 处理请求
     *
     * @param \think\Request $request
     * @param \Closure       $next
     * @return Response
     */
    public function handle($request, \Closure $next)
    {
        //
    }
}

在中间件文件中写入登录Token验证

#app\admin\middleware\AdminLogin.php
<?php
declare (strict_types = 1);

namespace app\admin\middleware;

class AdminLogin
{
    /**
     * 处理请求
     *
     * @param \think\Request $request
     * @param \Closure       $next
     * @return Response
     */
    public function handle($request, \Closure $next)
    {
        $request_uri = $_SERVER['REQUEST_URI'];
        $pathinfo = explode('?',$request_uri)[0];
		$pathinfo = strtolower($pathinfo);
		$white_list = []; // 白名单,不用登录
		if(!in_array($pathinfo, $white_list)){
            // 用户请求Token
			$token = $request->header('Access-Token');
			// 验证是否存在token
			if (empty($token)) {
				return json(['status'=>401,'msg'=>'token为空']);
			} else {
				$result = checkToken($token);
				if ($result['status'] != 200) {
					return json(['status'=>$result['status'],'msg'=>$result['msg']]);
				}
				$request->uid = $result['data']['id']; // 记录用户登录信息,给控制器传参
			}
		}
        return $next($request);
    }
}

在app\admin\middleware.php文件中调用中间件

#app\admin\middleware.php

\app\admin\middleware\AdminLogin::class,
#app\admin\middleware.php

<?php
// 这是系统自动生成的middleware定义文件
return [
    \app\admin\middleware\AdminLogin::class,
];

这样,登录Token验证就生效了,由于没有设置白名单,所以登录接口也被要求需要传Token

在AdminLogin.php中间件中写入白名单

$white_list = [
	'admin/Passport/login'
];
<?php
declare (strict_types = 1);

namespace app\admin\middleware;

class AdminLogin
{
    /**
     * 处理请求
     *
     * @param \think\Request $request
     * @param \Closure       $next
     * @return Response
     */
    public function handle($request, \Closure $next)
    {
        $request_uri = $_SERVER['REQUEST_URI'];
        $pathinfo = explode('?',$request_uri)[0];
		$pathinfo = strtolower($pathinfo);
		$white_list = [
			'/admin/passport/login'
		]; // 白名单,不用登录
		if(!in_array($pathinfo, $white_list)){
            // 用户请求Token
			$token = $request->header('Access-Token');
			// 验证是否存在token
			if (empty($token)) {
				return json(['status'=>401,'msg'=>'token为空']);
			} else {
				$result = checkToken($token);
				if ($result['status'] != 200) {
					return json(['status'=>$result['status'],'msg'=>$result['msg']]);
				}
				$request->uid = $result['data']['id']; // 记录用户登录信息,给控制器传参
			}
		}
        return $next($request);
    }
}

 这样,登录接口就不需要通过中间件验证Token了

在前面的admin/Index/index接口中代码就可以由图(1)改成图(2):

图(1)

图(2)

使用中间件后就不用每个方法中都写入登录Token验证的代码了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/249308.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【2023-12-14】 最新瑞幸咖啡小程序-blackbox

需要联系主页V 瑞幸咖啡小程序 登入需要过同盾滑块下单需要balckbox参数 测试 下单 过滑块 登入发短信 加密参数

云仓酒庄带您品法国葡萄酒

说起葡萄酒肯定绕不开法国&#xff0c;法国葡萄酒闻名中外&#xff0c;口碑卓越。作为世界上的产酒大国&#xff0c;可以说是每一寸土地都可以种植葡萄。云仓酒庄的品牌雷盛红酒分享这么优秀的一个葡萄酒产酒国有哪些特点呢&#xff1f; 1.产区特色&#xff1a;波国有最著名的…

首发卡密引流系统源码

程序特色&#xff1a; 支持个人和企业小程序广告获取卡密。 支持短视频点赞和关注获取卡密。 搭建教程&#xff1a; 环境要求&#xff1a;Nginx、MySQL 5.6、PHP 5.6 步骤&#xff1a; 将压缩包解压至网站根目录。 打开域名/install&#xff0c;按照提示填写数据库信息进行…

常见数据结构

数据结构概述 数据结构是计算机底层存储、组织数据的方式&#xff0c;是指数据相互之间是以什么方式排列在一起的。 通常情况下&#xff0c;精心选择的数据结构可以带来更高的运行或者存储效率。 栈 栈数据结构的执行特点&#xff1a;后进先出&#xff0c;先进后出。 栈模型…

P with Spacy:自定义文本分类管道

一、说明 Spacy 是一个功能强大的 NLP 库&#xff0c;其中许多 NLP 任务&#xff08;如标记化、词干提取、词性标记和命名实体解析&#xff09;均通过预训练模型提供开箱即用的功能。所有这些任务都由管道对象以及逐步应用于给定文本的不同函数的内部抽象来包装。该管道可以通过…

Kubernetes 容器编排(2)

可视化部署 官方Dashboard 部署Dashboard # kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml # kubectl edit svc kubernetes-dashboard -n kubernetes-dashboard # 注意将 type: ClusterIP 改为 type: NodePo…

053:vue工具--- 英文字母大小写在线转换

第047个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使…

Spring深入学习

1 Bean创建的生命周期 Spring bean是Spring运行时管理的对象。Spring Bean的生命周期指的是Bean从创建到初始化再到销毁的过程&#xff0c;这个过程由IOC容器管理。 IOC即控制反转&#xff0c;是面向对象编程中的一种设计原则&#xff0c;通过依赖注入&#xff08;DI&#xf…

Java8实战 - 行为参数化传递代码

背景&#xff1a; 根据《java8实战》把第二章简单概括一下。 在软件工程中&#xff0c;一个最重要的问题是&#xff0c;用户的需求会一直变化&#xff0c;如何应对不断变化的需求&#xff0c;并且把工作量降到最低是需要考虑的&#xff0c;而行为参数化就是一个处理频繁变更需…

我在代码随想录|写代码之203. 移除链表元素,707. 设计链表,206. 反转链表

​第一题 ​​ 203. 移除链表元素 题目: 思路分析: 我们要删除节点说白了就是将节点移除,将要删除的节点的前一个的next域移动到要删除节点的next域,我们可以这样写当我们运到我们要删除节点然后件他删除,那么怎么删除?我们可以直接让我们要删除的元素找不到。如果我们直接将…

JdbcTemplate query系列方法指定jdbcType类型

使用SqlParameterValue类包装一下就行了&#xff0c;只要创建一个SqlParameterValue对象&#xff0c;通过构造函数把jdbcType类型&#xff08;用的是Types中的常量&#xff09;和值传入 例如&#xff1a; // 这两个包下面的 import org.springframework.jdbc.core.SqlParamete…

LAMP平台——构建PHP运行环境

在构建LAMP平台时&#xff0c;各组件的安装顺序依次为Linux、Apache、MySQL、PHP。其中Apache和 MySQL的安装并没有严格的顺序&#xff1b;而PHP环境的安装一般放到最后&#xff0c;负责沟通Web服务器和数据库 系统以协同工作。 PHP 即 Hypertext Preprocessor&#xff08;超级…

nodejs+vue+微信小程序+python+PHP邮件分类系统的设计与实现-计算机毕业设计推荐

方便安装&#xff0c;减少了维护的工作量&#xff0c;只需要通过服务器端的更新就可以实现新系统的发布&#xff0c;提高了邮件分类系统的可扩展性和可移植性。 E-mail是信息化时代最重要的联系工具之一&#xff0c;在日常的工作学习中具有非常重要作用。电子邮件作为互联网技术…

Vue3-19-组件-定义和基本使用

组件的定义 个人理解 &#xff1a;1、组件&#xff0c;就是我们把某个功能模块进行封装&#xff0c;在使用时直接引入进行使用&#xff0c;极大的提高了代码的可复用性。2、在vue 中&#xff0c;一个 [.vue] 文件&#xff0c;就是一个组件。3、组件之间存在【引入】 与 【被引…

什么是供应链安全及其工作原理?

6000公里长的丝绸之路将丝绸、谷物和其他货物从中国运送到帕尔米拉。尽管蒙古治下的和平保护丝绸之路免受海盗、强盗和内部盗窃的侵害&#xff0c;但商人仍然装备精良&#xff0c;并依赖于大型商队旅行和战略性放置的小型堡垒所提供的安全。 为什么供应链安全很重要&#xff1…

智安网络|企业网络安全工具对比:云桌面与堡垒机,哪个更适合您的需求

随着云计算技术的快速发展&#xff0c;越来越多的企业开始采用云计算解决方案来提高效率和灵活性。在云计算环境下&#xff0c;云桌面和堡垒机被广泛应用于企业网络安全和办公环境中。尽管它们都有助于提升企业的安全和效率&#xff0c;但云桌面和堡垒机在功能和应用方面存在着…

智能优化算法应用:基于秃鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于秃鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于秃鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.秃鹰算法4.实验参数设定5.算法结果6.参考文献7.MA…

实战指南:使用 Nginx 反向代理实现多端口跳转

目录 前言1 实现的效果2 准备两个tomcat服务2.1 启动8080端口的tomcat服务2.2 启动8081端口的tomcat服务 3 Nginx 配置3.1 配置内容3.2 配置说明3.3 location符号的含义和作用 4 开放防火墙端口5 测试与验证结语 前言 在现代 Web 开发中&#xff0c;Nginx作为一款高性能的开源…

FL Studio 21.2.2.3914破解补丁含FL Studio2024 Crack文件及怎么激活FL Studio

FL Studio 21.2.2.3914中文破解版国人习惯称水果编曲, 是一个完整的电音软件音乐制作环境或数字音频工作站。是现在流行的数字音频工作站之一,包括撰写,整理,记录,编辑,电音,混音和掌握专业品质的音乐。 FL Studio 21.2.2.3914 (Windows)原版安装程序破解补丁 软件全名&#x…

索引与优化原理(上)

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 上一篇&#xff0c;我们…