首页 > 其他分享 >laravel11:添加全局中间件

laravel11:添加全局中间件

时间:2024-10-10 16:34:50浏览次数:13  
标签:__ Http Middleware 中间件 middleware laravel11 全局 class

一,文档地址:

https://docs.golaravel.com/docs/middleware

注意选择11这个版本

二,添加全局中间件时,需要添加到bootstrap/app.php文件中:

1,

use App\Http\Middleware\EnsureTokenIsValid;

->withMiddleware(function (Middleware $middleware) {
     $middleware->append(EnsureTokenIsValid::class);
})

说明:append方法同时支持数组和字串,即此处可以是一个数组,传递多个中间件

2, 整体形式如下:

require __DIR__ . '/global_functions.php';

return Application::configure(basePath: dirname(__DIR__))
    ->withRouting(
        web: __DIR__.'/../routes/web.php',
        api: __DIR__.'/../routes/api.php',
        commands: __DIR__.'/../routes/console.php',
        health: '/up',
    )
    ->withMiddleware(function (Middleware $middleware) {
        //
        $middleware->append(ApiSign::class);
    })
    ->withExceptions(function (Exceptions $exceptions) {

        $exceptions->respond(function (Response $response, Throwable $exception) {

            $env = env('APP_ENV');
            //本地和测试 环境时,打印文件和行数,生产环境只打印信息
            if ($env == 'local' || $env == 'testing') {
                $msg = $exception->getMessage().' '.$exception->getFile().' '.$exception->getLine();
            } else {
                $msg = $exception->getMessage();
            }

            return Result::ErrorCode($exception->getCode(),$msg);
        });

    })->create();

三,全局中间件例子:

1,使用中间件

->withMiddleware(function (Middleware $middleware) {
    $middleware->prepend(SomeMiddleware::class);
    $middleware->append(AnotherMiddleware::class);
    $middleware->remove(UnwantedMiddleware::class);
    $middleware->replace(OldMiddleware::class, NewMiddleware::class);
})

2,可以定义并修改一个中间件组

->withMiddleware(function (Middleware $middleware) {
    $middleware->group('custom', [
        FirstMiddleware::class,
        SecondMiddleware::class,
    ]);
    
    $middleware->prependToGroup('web', NewWebMiddleware::class);
    $middleware->appendToGroup('api', NewApiMiddleware::class);
    $middleware->removeFromGroup('web', OldWebMiddleware::class);
    $middleware->replaceInGroup('api', OldApiMiddleware::class, NewApiMiddleware::class);
})

 3,手动管理laravel的全局中间件

->withMiddleware(function (Middleware $middleware) {
    $middleware->use([
        // \Illuminate\Http\Middleware\TrustHosts::class,
        \Illuminate\Http\Middleware\TrustProxies::class,
        \Illuminate\Http\Middleware\HandleCors::class,
        \Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance::class,
        \Illuminate\Http\Middleware\ValidatePostSize::class,
        \Illuminate\Foundation\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ]);
})

 

标签:__,Http,Middleware,中间件,middleware,laravel11,全局,class
From: https://www.cnblogs.com/architectforest/p/18456281

相关文章

  • 全局视角看技术-Java多线程演进史
    作者:京东科技文涛全文较长共6468字,语言通俗易懂,是一篇具有大纲性质的关于多线程的梳理,作者从历史演进的角度讲了多线程相关知识体系,让你知其然知其所以然。前言2022年09月22日,JDK19发布了,此版本最大的亮点就是支持虚拟线程,从此轻量级线程家族再添一员大将。虚拟线程使JVM摆脱......
  • CMake 属性之全局属性
    【写在前面】CMake的全局属性是指在CMake配置过程中,对整个项目范围生效的设置。这些属性不同于目标(Target)属性或目录(Directory)属性,后者仅对特定的目标或目录生效。【正文开始】CMake全局范围的属性有(CMake3.30 ):ALLOW_DUPLICATE_CUSTOM_TARGETSAUTOG......
  • 基于session的认证权限中间件
    fromdjango.utils.deprecationimportMiddlewareMixinfromdjango.confimportsettingsfromdjango.shortcutsimportredirect,HttpResponse,renderfromdjango.httpimportJsonResponseclassContext:def__init__(self,role,id,name):self.ro......
  • NVIDIA Jetson Orin边缘计算MEC全局化部署
    前情提要随着AI技术已经在交通、物流、安防、智能制造等方面适用广泛,市场对更低功耗、更高性价比和更强大的AI计算性能的需求不断增长。企业基于NVIDIA平台产品开发势在必行!集和诚作为英伟达NPN伙伴,与英伟达紧密协作,并积极投入基于英伟达平台AI边缘计算控制器的研发过程。......
  • vue3如何将 app 全局变量对象变为响应式并监听到某个属性的改变
    需求:通过 getData()方法获取到数据对象,想要在屏幕方向改变的时候,给获取到的对象设置  orientation,能实时修改方案:使用reactive包裹,template直接使用全局变量下的属性,watch直接监听对应属性代码如下:main.jsconstconfig=reactive(getData())//设置屏幕方......
  • 前端模块化进化史:从全局 function 到 ES Modules
    目前,前端开发已经离不开由CommonJS、ESModules和Webpack构建的模块化开发环境。无论是JavaScript、CSS、图片还是其他资源,都可以作为一个模块来处理。那么,模块化究竟是如何发展到今天的呢?全局函数模式最初的前端模块化尝试是通过全局函数来实现的。例如,在一个util.js文......
  • Note - 单 log 求排列全局三维偏序数量
    考虑容斥计数。令\(f_c\)为恰好\(c\)维偏序的数量。那么考虑\(i\)若对于\(j\)是\(x\)维偏序,那么\(j\)对于\(i\)就是\(3-x\)维偏序。于是可以知道有\(f_0=f_3,f_1=f_2\),进一步可以推出\(f_2+f_3=\frac{n(n-1)}{2}\)。那么接下来就要向\(f_2,f......
  • C#基础-成员变量&局部变量&全局变量
        代码中经常使用变量用于记录,如:一个人的年龄、身高、家人等。这些数据用于记录这个人的信息,并且在运行过程中,这些数据可以发生变化,叫做变量。在不同的地方声明的变量作用域不同。在同一作用域下不可存在多个相同名字的变量。目录变量:成员变量:局部变量: 全局变......
  • 中间件漏洞
    中间件漏洞常见的web中间件iisapachetomcatnginxjbossWeblogicWebSphereIIS6x篇1.1PUT漏洞1.漏洞描述IISServer在Web服务扩展中开启了WebDAV,配置了可以写入的权限,造成任意文件上传。版本:IIS6.02.漏洞复现1)开启WebDAV和写权限3.漏洞复现过程1)直接抓包......
  • 29. GIL全局解释器锁、信号量、线程池进程池
    1.GIL全局解释器锁 1.1概念'''InCPython,theglobalinterpreterlock,orGIL,isamutexthatpreventsmultiplenativethreadsfromexecutingPythonbytecodesatonce.ThislockisnecessarymainlybecauseCPython’smemorymanagementisnotthrea......