Laravel 6 - 第十一章 中间件

文章目录

Laravel 6 - 第一章 简介
Laravel 6 - 第二章 项目搭建
Laravel 6 - 第三章 文件夹结构
Laravel 6 - 第四章 生命周期
Laravel 6 - 第五章 控制反转和依赖注入
Laravel 6 - 第六章 服务容器
Laravel 6 - 第七章 服务提供者
Laravel 6 - 第八章 门面
Laravel 6 - 第九章 契约
Laravel 6 - 第十章 路由
Laravel 6 - 第十一章 中间件
Laravel 6 - 第十二章 控制器
Laravel 6 - 第十三章 请求
Laravel 6 - 第十四章 响应
Laravel 6 - 第十五章 验证器
Laravel 6 - 第十六章 Artisan命令


目录

  • 文章目录
  • 一、中间件(middleware)
  • 二、使用步骤
    • 1.创建中间件
    • 2.编写中间件
    • 3.注册中间件
    • 4.使用中间件
    • 5.中间件组
    • 6.排序
  • 三、总结


一、中间件(middleware)

中间件(Middleware)提供了一种机制,用于过滤进入应用程序的 HTTP 请求,可以执行一些常见的任务,如:身份验证、日志记录、CORS(跨源资源共享)处理等。

二、使用步骤

1.创建中间件

使用 artisan cli 创建一个新的中间件(CheckUsernameMiddleware),如下:

$ php artisan make:middleware CheckUsernameMiddleware

如上命令会在 app/Http/Middleware 下新建 中间件(CheckUsernameMiddleware)类。

2.编写中间件

1中例子,在 中间件(CheckUsernameMiddleware)handle 方法中编写处理逻辑,如下:
在这里插入图片描述
如上,前置逻辑是在应用处理请求之前执行,后置逻辑是在应用处理请求之后执行。

3.注册中间件

1中的例子,打开 app/Http/Kernel.php 文件,找到 $routeMiddleware 数组,将中间件别名(checkUsername)映射到 CheckUsernameMiddleware。如下:
在这里插入图片描述

4.使用中间件

1、路由中间件
3中例子,在路由文件(如:routes/api.php)添加如下内容:
在这里插入图片描述
表示只会在 /show 上运行中间件(CheckUsernameMiddleware),其他同理,使用方法可参考Laravel 6 - 第十章 路由中路由组的例子。

2、全局中间件
1中例子,在 app/Http/Kernel.php 文件中找到 $middleware 数组并添加中间件(CheckUsernameMiddleware),如下:
在这里插入图片描述
表示在应用程序的所有请求中都会运行中间件(CheckUsernameMiddleware),且无需在路由文件(如:routes/api.php)指定。

5.中间件组

以项目默认中间件组为例,如果想把多个中间件打包成一个组,从而方便使用,则可在app/Http/Kernel.php 文件中的 $middlewareGroups 数组中添加如下内容:
在这里插入图片描述
在路由中使用,如下:
在这里插入图片描述

6.排序

以项目默认中间件组为例,如果想让中间件以特定的顺序执行,则可在app/Http/Kernel.php 文件中的 $middlewarePriority 数组中添加如下内容:
在这里插入图片描述
如上会将强制非全局中间件始终保持给定的顺序。


三、总结

使用中间件可以轻松地过滤、修改进入应用程序的请求。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度解析:云计算的三宝——IaaS、PaaS和SaaS

4月22日,腾讯宣布旗下协作SaaS产品全面接入腾讯混元大模型,除去企业微信、腾讯会议、腾讯文档等“一门三杰”产品,腾讯乐享、腾讯电子签、腾讯问卷、腾讯云AI代码助手等协作SaaS产品也都已实现智能化升级。大模型应用落地再加速。 那么什么是…

2024年深圳杯东三省数学建模联赛A题论文首发第二种思路

深圳杯A题论文代码分享资料链接:链接:https://pan.baidu.com/s/1L2NVgoefSW-yuqZjEB3wcw 提取码:sxjm 问题一 数据转换: 首先,我们将监测站的经纬度坐标转换为基于米的笛卡尔坐标系。这是因为在地面上的大尺度距离…

HarmonyOS开发案例:【音乐播放器】

介绍 使用ArkTS语言实现了一个简易的音乐播放器应用,主要包含以下功能: 播放应用中的音频资源文件,并可进行上一曲、下一曲、播放、暂停、切换播放模式(顺序播放、单曲循环、随机播放)等操作。结合后台任务管理模块&…

安全小课堂丨什么是暴力破解?如何防止暴力破解

什么是暴力破解? 暴力破解也可称为穷举法、枚举法,是一种比较流行的密码破译方法,也就是将密码进行一一推算直到找出正确的密码为止。比如一个6位并且全部由数字组成的密码,可能有100万种组合,也就是说最多需要尝试10…

JWT原理解析

一、概述 虽然现在很多的开发框架会支持JWT的使用,但是对JWT还是没有一个详细的了解,有很多疑惑: JWT比之前的session或者token有什么好处?JWT的构成元素是什么?JWT从生成到使用的详细流程? 二、 JWT 2…

SPI Flash and External SPI RAM(基于ESP32)

主要参考资料: 乐鑫ESP-IDF资料SPI Flash API: https://docs.espressif.com/projects/esp-idf/zh_CN/v5.1/esp32s3/api-reference/peripherals/spi_flash/index.html 乐鑫ESP-IDF资料SPI Flash and External SPI RAM Configuration: https://docs.espressif.com/pro…

场景 - 分库分表

分什么 数据量大分表,并发大分库 分表字段如何选择 如果对交易订单进行分表,可以选择的东西很多,比如说商户id,用户id,地区等等 分表的时候要考虑到数据倾斜问题 数据倾斜 比如说按商户号进行分表,一共…

pnpm 安装后 node_modules 是什么结构?为什么 webpack 不识别 pnpm 安装的包?

本篇研究:使用 pnpm 安装依赖时,node_modules 下是什么结构 回顾 npm3 之前:依赖树 缺点: frequently packages were creating too deep dependency trees, which caused long directory paths issue on Windowspackages were c…

Day 20 Linux的WEB服务——apache

WEB服务简介 目前主流的web服务器软件 Linux:apache , nginx Windows-server:IIS 服务器安装nginx或apache后,叫做web服务器(又称WWW服务器) web服务器软件属于C/S框架模型 web服务器是一种被动程序只…

薄板样条插值TPS原理以及torch和opencv实现

薄板样条插值TPS原理以及torch和opencv实现 1、薄板样条插值TPS原理概述原理以及公式推导2、torch实现3、opencv实现1、薄板样条插值TPS原理 概述 薄板样条(Thin Plate Spline),简称TPS,是一种插值方法,可找到通过所有给定点的“最小弯曲”光滑曲面。因为它一般都是基于…

UE4网络图片加载库(带内存缓存和磁盘缓存)

UE4网络图片加载库,带内存缓存和磁盘缓存,支持自定义缓存大小,支持蓝图和C++代码调用 1、调用示例 2、对外暴露函数 3、源代码-网络模块 KeImageNet.h // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreM…

Vue基于高德地图API封装一个地图组件

一、参考资料 高德开放平台 | 高德地图API (amap.com) 二、安装及配置 pnpm i vuemap/vue-amap --save man.ts 密钥及安全密钥需要自己到高德地图开放平台控制台获取. import { createApp } from vue import App from ./App.vue import router from ./router i…

java实现解析html获取图片或视频url

一、前言 有时在实际项目中,比如发布某篇文章,需要取文章中的某张图片作为封面,那么此时需要文章内容,获取html内容中的图片地址作为封面,下面讲下如何获取html中的图片或视频地址。 二、实现 1.先定义一个工具类&…

Python学习教程(Python学习路线+Python学习视频):Python数据结构

数据结构引言: 数据结构是组织数据的方式,以便能够更好的存储和获取数据。数据结构定义数据之间的关系和对这些数据的操作方式。数据结构屏蔽了数据存储和操作的细节,让程序员能更好的处理业务逻辑,同时拥有快速的数据存储和获取方…

android openGL ES详解

1、渲染线程与主线程的通信 两个线程之间的通信可以用如下方法: 在主线程中的 GLSurfaceView 实例可以调用 queueEvent( )方法传递一个 Runnable 给后台渲染线程,渲染线程可以调用 Activity 的 runOnUIThread()来传递事件 (event) 给主线程。 2、顶点…

Redhawk:ATE如何产生top level sta file

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 相关文章链接 redhawk: create STA file 在“redhawk: create STA file”一文中介绍了ate的用法,可以应对block level的设计,但当需要做top level分析时&

构建安全高效的前端权限控制系统

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步&am…

单片机学习过程

继电器光耦隔离电压转换步进电机直流电机 arduino是最好用的一种,他提供了完整的设备库文件,任何外部设备只要查找相应的库,就可以很方便的使用 , 但是如果不去学习51 或stm32 或 嵌入式玩玩还可以,如果碰到没有实现的…

使用 IPAM 解决方案简化分布式网络管理

随着组织在数字领域的全球扩张,分布式网络是不可避免的,这意味着,随着 IT 基础设施的发展,组织需要适应,这包括在不断增长的系统需求、应用程序堆栈、各种协议和安全防御中监控、现代化和简化流程和资源。在有效管理现…

盲人过马路安全:科技力量赋予“隐形守护者”

作为一名资深记者,我始终关注着社会各群体的生活现状,尤其是那些面临特殊挑战的人群。今天,我想聚焦一个看似平常却对盲人构成重大困扰的日常场景——过马路,以及一款名为蝙蝠避障的辅助应用如何成为他们的盲人过马路安全的守护者…