学堂 学堂 学堂公众号手机端

用Laravel的中间件能实现什么功能,如何自定义中间件

lewis 1年前 (2024-04-06) 阅读数 7 #技术
今天就跟大家聊聊有关“用Laravel的中间件能实现什么功能,如何自定义中间件”的内容,可能很多人都不太了解,为了让大家认识和更进一步的了解,小编给大家总结了以下内容,希望这篇“用Laravel的中间件能实现什么功能,如何自定义中间件”文章能对大家有帮助。



在laravel中,中间件的作用就是过滤HTTP请求,根据不同的请求来执行不同的逻辑操作;中间件可以进行请求数据的拦截处理和数据检验,并且进行逻辑处理后判断是否允许进入下一个中间件。

本文操作环境:Windows10系统、Laravel6版、Dell G3电脑。

laravel的中间件有什么用

中间件顾名思义是指在请求和响应中间,进行请求数据的拦截处理,数据校验,并且进行逻辑处理后判断是否允许进入下一个中间件;中间件分为前缀中间件,后置中间件;可以用于权限认证、日志记录等。

简单来说中间件在 laravel 中的作用就是过滤 HTTP 请求,根据不同的请求来执行不同的逻辑操作。

我们可以通过中间件实现以下功能:

指定某些路由

设置 HTTP 响应头

记录请求

过滤请求的参数

决定是否启用站点维护模式

响应前后做一些必要的操作

自定义中间件

命令行执行下面的简单命令,就可以轻松创建一个新的中间件

php artisan make:middleware <MiddlewareName>
//MiddlewareName 就是你要创建的中间件的名字

执行上面的命令,Laravel 会在 app/Http/Middleware 目录下自动创建一个只包含 handle 方法的中间件。

<?php
namespace App\Http\Middleware;
use Closure;
class RedirectIfSuperAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        return $next($request);
    }
}

在中间件被调用的时候,handle 方法就会执行。这里需要注意的是 handle 方法默认有两个参数 $request 和 $next 。 $request 用来接受应用的请求组求, $next 将请求传递给应用程序。这两个参数是 handle 必不可少的!中间件也包括前置中间件和后置中间件。

“前置中间件” 顾名思义在将请求转发到应用程序之前处理一些逻辑。 另一方面,在中间件之后,在应用程序处理了请求并生成响应之后运行。

前置中间件:

<?php
namespace App\Http\Middleware;
use Closure;
class RedirectIfSuperAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        //你的逻辑就在这里
        return $next($request);
    }
}

后置中间件:

<?php
namespace App\Http\Middleware;
use Closure;
class RedirectIfSuperAdmin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $response = $next($request);
        //你的逻辑就在这里 例如 重定向到  `/`
        return $response;
    }
}


关于“用Laravel的中间件能实现什么功能,如何自定义中间件”就介绍到这了,如果大家觉得不错可以参考了解看看,如果想要了解更多,欢迎关注博信,小编每天都会为大家更新不同的知识。
版权声明

本文仅代表作者观点,不代表博信信息网立场。

热门