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

Thinkphp6.0中间件.上

本节课我们来学习一下中间件的用法,定义一下中间件。

一.定义中间件

1. 中间件的主要用于拦截和过滤 HTTP 请求,并进行相应处理;
2. 这些请求的功能可以是 URL 重定向、权限验证等等;
3. 为了进一步了解中间件的用法,我们首先定义一个基础的中间件;
4. 可以通过命令行模式,在应用目录下生成一个中间件文件和文件夹;
php think make:middleware Check
namespace app\middleware;
class Check
{
public function handle($request, \Closure $next)
{
if ($request->param('name') == 'index') {
return redirect('../');
}
return $next($request);
}
}

5. 然后将这个中间件进行注册,在应用目录下创建 middleware.php 中间件配置;
return [
app\middleware\Check::class
];

6. 中间件的入口执行方法必须是:handle()方法,第一参数请求,第二参数是闭包;
7. 业务代码判断请求的 name 如果等于 index,就拦截住,执行中间件,跳转到首页;
8. 但如果请求的 name lee,那需要继续往下执行才行,不能被拦死;
9. 那么就需要$next($request)把这个请求去调用回调函数;
10. 中间件 handle()方法规定需要返回 response 对象,才能正常使用;
11. $next($request)执行后,就是返回的 response 对象;
12. 为了测试拦截后,无法继续执行,可以 return response()助手函数测试;

二.前/后置中间件

1. $next($request)放在方法底部的方式,属于前置中间件;
2. 前置中间件就是请求阶段来进行拦截验证,比如登录判断、跳转、权限等;
3. 而后置中间件就是请求完毕之后再进行验证,比如写入日志等等;
public function handle($request, \Closure $next)
{
//中间件代码,前置
return $next($request);
}
public function handle($request, \Closure $next)
{
$response = $next($request);
//中间件代码,后置
return $response;
}

三.结束调度
1. 中间件提供了一个 end()方法,可以在中间件执行到最后时执行;
public function end(Response $response)
{
//中间件执行到最后执行
echo $response->getData();
}

相关文章:

Thinkphp6.0中间件.上

本节课我们来学习一下中间件的用法,定义一下中间件。 一.定义中间件 1. 中间件的主要用于拦截和过滤 HTTP 请求,并进行相应处理; 2. 这些请求的功能可以是 URL 重定向、权限验证等等; 3. 为了进一步了解中间件的用法&…...

十进制到八进制的转换

目录 十进制到八进制的转换 程序设计 程序分析 十进制到八进制的转换 【问题描述】对于输入的任意一个非负十进制整数n(0=<n<100000),打印输出与其等值的八进制数 【输入形式】非负十进制整数 【输出形式】相应十进制整数转换后的八进制正整数,若输入不符合要求,…...

【从零开始学Skynet】基础篇(四):网络模块常用API

游戏服务端要处理客户端请求&#xff0c;作为服务端引擎&#xff0c;网络编程也是Skynet的核心功能。1、学习网络模块 skynet.socket模块提供了网络编程的API&#xff0c;常用的API如下表所示&#xff1a;Lua API说明socket.listen(address ,port)监听一个端口&#xff0c;返回…...

怎么免费制作logo?logo免费设计在线生成,从此设计不求人

你有没有因为Logo制作而烦恼过&#xff1f;对于很多人来说&#xff0c;logo制作是一项比较大的工程&#xff0c;需要专门的设计师才能完成。但是请人设计费用高还很费时间&#xff0c;还需多次沟通修改。其实&#xff0c;我们可以自己免费制作logo&#xff0c;下面&#xff0c;…...

【目标检测】目标检测遇上知识图谱:Object detection meets knowledge graphs论文解读与复现

前言 常规的目标检测往往是根据图像的特征来捕捉出目标信息&#xff0c;那么是否有办法加入一些先验信息来提升目标检测的精准度&#xff1f; 一种可行的思路是在目标检测的输出加入目标之间的关联信息&#xff0c;从而对目标进行干涉。 2017年8月&#xff0c;新加波管理大学…...

IDEA重复下载SNAPSHOT包问题

问题现象 reimport 之后 状态栏显示resolving dependencies… 遇到某个比较大的快照包(33M)&#xff0c;同一天的第2个版本时 1.0-xxx-SNAPSHOT.时间戳-2 idea importer 会先分片下载 x.jar.part文件中&#xff0c;然后复制为x.jar吧 如图中所示&#xff0c;其实已经下载完了&…...

【Unity入门】12.MonoBehaviour事件函数

【Unity入门】MonoBehaviour事件函数 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity入门系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;常用的事件函数 &#xff08;1&#xff09;start和update方法 之前我们写的脚本&#xff0c;会默认帮助…...

1.3 Docker Compose-详细介绍

Docker Compose是一个用于定义和运行多个Docker容器的工具。它可以让用户轻松地定义和管理多个容器的配置&#xff0c;并且可以通过简单的命令来启动、停止和重启这些容器。在本文中&#xff0c;我们将详细介绍Docker Compose的使用和功能。 一、Docker Compose的安装 Docker…...

数据分析:麦当劳食品营养数据探索并可视化

系列文章目录 作者&#xff1a;i阿极 作者简介&#xff1a;Python领域新星作者、多项比赛获奖者&#xff1a;博主个人首页 &#x1f60a;&#x1f60a;&#x1f60a;如果觉得文章不错或能帮助到你学习&#xff0c;可以点赞&#x1f44d;收藏&#x1f4c1;评论&#x1f4d2;关注…...

ES6标准

ECMAScript 6.0&#xff08;以下简称 ES6&#xff09;是 JavaScript 语言的下一代标准 前端es6是模块化开发&#xff1b;es6模块化规范就是浏览器端与服务器端通用的模块化开发规范&#xff0c;其中定义了每一个JavaScript文件都是一个独立的模块&#xff0c;导入其他模块成员…...

ASP一个物流商品运输系统的设计与实现

物流运输行业的今天正朝着追求高效、低成本、稳定可靠的方向发展。本文详细介绍了网上物流管理系统&#xff0c;涉及到客户端运输线路设计、过程跟踪等功能模块以及管理员端的相应模块的具体实现&#xff0c;分析了整个系统的架构、工作原理、实现功能等。系统采用ASPMS SQL以B…...

肖 sir_就业课__009ui自动化讲解

ui自动化讲解 1、你做过自动化测试吗&#xff1f;做过 ui自动化测试、接口自动化、app自动化 2、你讲下你做的ui接口自动化&#xff1f; &#xff08;1&#xff09;第一种&#xff1a;按照线性流程讲解 &#xff1a;pythonselenium 库做ui自动化 &#xff08;2&#xff09;第二…...

「线性DP」花店橱窗

花店橱窗 https://ac.nowcoder.com/acm/contest/24213/1005 题目描述 ​ 小q和他的老婆小z最近开了一家花店&#xff0c;他们准备把店里最好看的花都摆在橱窗里。 ​ 但是他们有很多花瓶&#xff0c;每个花瓶都具有各自的特点&#xff0c;因此&#xff0c;当各个花瓶中放入不同…...

数组的去重方法

1、ES6的Set方法去重 new Set是ES6新推出的一种类型。它和数组的区别在于&#xff0c;Set类型中的数据不可以有重复的值。当然&#xff0c;数组的一些方法Set也无法调用。 使用方法&#xff1a;将一个数组转化为Set数据&#xff0c;再转化回来&#xff0c;就完成了去重。 cons…...

ESP32-LORA通信

文章目录好久没更新博客了&#xff0c;今天清明节&#xff0c;写个LORA通信。在此记念在天堂的外婆。祝她安好LORA通信简介一、模块二、使用步骤1.电脑通过USB串口模块联接LORA模块2.ESP32连接LORA通信进行收发通信3.电脑运行调试助手&#xff0c;ESP32运行代码。实现LORA通信测…...

博客首页效果

学习来自风宇blog的博客首页效果 全部用的基本上都是原生的html&#xff0c;css&#xff0c;js特别是flex布局的使用&#xff0c;主轴方向可以是横轴&#xff0c;也可以是纵轴&#xff0c;弹性项还可可以使用百分比sticky粘性布局&#xff0c;作为侧边栏&#xff0c;它不会超出…...

【LeetCode】剑指 Offer(29)

目录 题目&#xff1a;剑指 Offer 56 - II. 数组中数字出现的次数 II - 力扣&#xff08;Leetcode&#xff09; 题目的接口&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 过啦&#xff01;&#xff01;&#xff01; 题目&#xff1a;剑指 Offer 57. 和为s的两个数…...

自然语言处理(八):Lexical Semantics

目录 1. Sentiment Analysis 2. Lexical Database 2.1 What is Lexical Database 2.2 Definitions 2.3 Meaning Through Dictionary 2.4 WordNet 2.5 Synsets 2.6 Hypernymy Chain 3. Word Similarity 3.1 Word Similarity with Paths 3.2 超越路径长度 3.3 Abstra…...

推荐一款 AI 脑图软件,助你神速提高知识体系搭建

觅得一款神器&#xff0c;接近我理想中&#xff0c;搭建知识体系的方法&#xff0c;先来看视频作为数据库开发或管理者&#xff0c;知识体系搭建尤为重要。来看看近些年缺乏足够数据库知识面造成的危害&#xff1a;a/ 数据安全风险&#xff1a;例如&#xff0c;2017年Equifax数…...

掌握这些“学习方法和工具”,让你事半功倍!

在中国这个高竞争的社会环境下&#xff0c;学习成为了每个人都需要掌握的技能。然而&#xff0c;学习并不仅仅是读书和听课&#xff0c;更是需要一系列高效的方法和习惯来提高效率。本文将介绍一些实用的学习经验和方法&#xff0c;以及推荐一些国内好的学习工具和平台&#xf…...

C语言在嵌入式开发中的核心地位与实践技巧

1. 为什么C语言仍然是嵌入式开发的基石&#xff1f;作为一名在嵌入式行业摸爬滚打十年的老工程师&#xff0c;我见过太多人轻视C语言的重要性。直到现在&#xff0c;我面试的应届生中仍有超过60%对指针的理解停留在"变量地址"这种表层概念。但现实是&#xff0c;全球…...

如何选择ComfyUI-FramePackWrapper的模型加载方案?从技术选型到场景适配全解析

如何选择ComfyUI-FramePackWrapper的模型加载方案&#xff1f;从技术选型到场景适配全解析 【免费下载链接】ComfyUI-FramePackWrapper 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-FramePackWrapper 在AI视频生成工作流中&#xff0c;模型加载是影响效率与稳…...

Shell脚本编程与自动化运维了解006

一、Shell脚本基础1.1 Bash脚本概述Shell脚本是一种解释型编程语言&#xff0c;用于自动化Linux系统管理任务。Bash&#xff08;Bourne Again SHell&#xff09;是Linux系统中最常用的Shell解释器。脚本基本结构图#!/bin/bash # 这是一个注释 echo "Hello, World!"关…...

Streamlit像素UI深度优化教程:解决Ostrakon-VL终端文字遮挡问题

Streamlit像素UI深度优化教程&#xff1a;解决Ostrakon-VL终端文字遮挡问题 1. 项目背景与问题分析 在开发Ostrakon-VL零售扫描终端时&#xff0c;我们选择了一种独特的像素艺术风格UI设计。这种高饱和度的8-bit复古游戏美学虽然提升了用户体验的趣味性&#xff0c;但也带来了…...

5分钟快速修复Windows更新故障:Reset Windows Update Tool完全指南

5分钟快速修复Windows更新故障&#xff1a;Reset Windows Update Tool完全指南 【免费下载链接】Reset-Windows-Update-Tool Troubleshooting Tool with Windows Updates (Developed in Dev-C). 项目地址: https://gitcode.com/gh_mirrors/re/Reset-Windows-Update-Tool …...

基于CasRel的微信小程序开发:智能合同关键信息抽取工具

基于CasRel的微信小程序开发&#xff1a;智能合同关键信息抽取工具 1. 引言 你有没有过这样的经历&#xff1f;面对一份几十页的合同&#xff0c;需要手动找出甲方、乙方、合同金额、签约日期、违约责任条款……一页页翻&#xff0c;一行行看&#xff0c;不仅耗时费力&#x…...

Precor必确 GLUTEBUILDER 系列,带来系统化臀部训练解决方案

在健身训练不断细分的当下&#xff0c;臀部训练早已不再是“顺带练一练”的附属项目&#xff0c;而是被置于与胸、背、腿同等重要的核心地位。然而&#xff0c;真正高效的臀腿训练&#xff0c;从来不是简单堆叠负重&#xff0c;而是建立在精准发力与动作模式科学之上的系统工程…...

重构macOS鼠标体验:从痛点到解决方案的技术探索

重构macOS鼠标体验&#xff1a;从痛点到解决方案的技术探索 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 【问题发现&#xff1a;被忽视的交互…...

用快马平台5分钟构建qoderwork理念下的待办事项应用原型

最近在研究qoderwork这个概念&#xff0c;简单来说就是通过AI辅助快速把想法变成可运行的代码原型。正好用InsCode(快马)平台试了下做个待办事项应用&#xff0c;整个过程比想象中顺畅很多&#xff0c;分享下具体实现思路。 整体框架搭建 首先确定基础HTML结构&#xff0c;分为…...

MTK手机屏显干扰全解析:亮灭屏、射频干扰与TP失灵,我是如何用PLL_CLOCK和Porch参数解决的

MTK手机屏显干扰全解析&#xff1a;亮灭屏、射频干扰与TP失灵实战解决方案 引言&#xff1a;当屏幕开始"跳舞"——移动设备显示异常背后的复杂世界 那块6.5英寸的OLED屏幕又一次在通话过程中突然闪烁起来&#xff0c;像被无形的幽灵操控着。作为MTK平台驱动开发工程师…...