Laravel框架 - 中间件篇

什么是中间件?

在 Laravel 框架中,中间件是一种用于处理 HTTP 请求的组件。它允许你在请求进入路由 处理 之前之后 执行一些代码逻辑。

中间件的优势和功能

处理身份验证:验证用户是否已经登录或者检查用户是否有权限访问特定的路由

记录日志:记录请求的日志,以便了解请求的轨迹。

访问控制:确保请求是从指定 IP 地址发送的,或仅限于特定用户组。

数据验证:验证请求的数据是否符合指定的格式。

数据处理:对请求的数据进行处理,例如编码数据或对数据进行加密。

缓存:中间件可以使用缓存,以提高请求的速度和效率。

安全:中间件可以防止安全漏洞,例如跨站请求伪造(CSRF)攻击。

权限控制:中间件可以控制用户的访问权限,确保安全性。

认证:中间件可以实现认证和授权逻辑。

我们将在下面一一展示四个用途实例!!!!!

中间件的创建与使用

1,创建中间件

使用 make:middleware 命令来创建新的中间件:

php artisan make:middleware CheckAge

如果你是一个小白,请先移步中间件 | 基础功能 |《Laravel 7 中文文档 7.x》| Laravel China 社区了解之后欢迎回来。

2,修改中间件

复制代码
路径地址:app\Http\Middleware\你创建的中间件文件:
php 复制代码
 public function handle(Request $request, Closure $next)
    {	
		
		// 在请求进入路由处理之前执行的代码
        // 可以在这里对请求进行一些处理或检查,然后决定是否继续执行路由处理

        // 例如,可以在这里检查用户是否已登录,如果未登录则重定向到登录页面
		

        // 执行下一个中间件或路由处理程序
        return $next($request);
    }

3,注册中间件:

路径地址:app/Http/Kernel.php 注册中间件

找到 middleware 数组 和 routeMiddleware 数组 。将以下代码添加到middleware数组中:

3.1注册全局中间件

注册全局中间件很简单,只需在app/Http/Kernel.php 文件中的 $middleware 属性中列出这个中间件即可

php 复制代码
protected $middleware = [
    // ...
    \App\Http\Middleware\ExampleMiddleware::class,
];

3.2注册路由中间件

写在**$routeMiddleware**下。

php 复制代码
protected $routeMiddleware = [
    // ...
    'example.middleware' => \App\Http\Middleware\ExampleMiddleware::class,
];

4,使用中间件:

php 复制代码
Route::get('/example', 'ExampleController@index')->middleware('example.middleware');
//当访问/example路由时,ExampleMiddleware中间件将首先被执行。

中间件的些许功能代码实例

什么是访问控制?

访问控制:您可以使用中间件确保请求是从指定 IP 地址发送的,或仅限于特定用户组。

下面是测试结果:

年龄小于18 未经授权

年龄大于等于18 ,欢迎您!

上面的代码实现了一个中间件,该中间件会检查请求中的年龄字段。如果年龄小于 18,则会返回错误信息,表示该请求未授权。

Laravel中间件之记录日志!

日志记录效果

现在,每当请求被处理时,都会记录请求的信息。您可以在 storage/logs 目录中查看请求日志。

通过使用中间件记录请求日志,您可以方便地了解请求的轨迹,并且如果发生错误,您还可以使用日志来调试问题。

Laravel中间件之数据验证!

测试效果

失败

我们使用了Laravel的Validator类进行验证,通过调用make方法并传入请求数据和验证规则来创建一个验证器。

如果验证失败,则返回一个400状态码和错误信息的JSON响应。

如果验证通过,则继续执行请求,通过调用$next方法并传入请求。

Laravel中间件之数据处理

加密的数据

对请求中的数据进行加密处理。我们使用了 encryptData 方法对数据进行加密,该方法的具体实现在其中。

当请求通过此中间件时,它会处理请求中的数据,并将处理后的数据重新写入请求,最后返回请求以便继续处理。

值得思考的10个中间件问题

对中间件的理解和定义?

请看文章最上面

能详细讲解一下Laravel中间件的使用方法吗?

使用 Artisan 命令行工具生成中间件,注册中间件。修改生成的中间件文件。使用中间件

你在开发中如何使用中间件?

创建中间件注册中间件分配中间件然后根据需求进行使用

中间件的优势和功能是什么?

请看文章最上面

如何自定义一个中间件?

使用 Artisan 命令行工具生成中间件

如何将中间件作为请求处理的一个环节?

在 Laravel 中,可以通过在 HTTP 请求的生命周期中加入中间件来将其作为请求处理的一个环节。要将中间件作为请求处理的一个环节,需要执行以下步骤:

创建中间件:使用 Laravel 命令行工具创建中间件。

注册中间件:在应用程序的 HTTP 请求生命周期中注册中间件。

定义中间件处理逻辑:在中间件类中定义处理逻辑。

分配中间件:在路由或控制器中分配中间件,以指定其对特定请求的作用。

在请求流经中间件之前,Laravel 会先对请求进行预处理。在中间件处理请求后,如果中间件允许请求继续,则请求将继续到下一个环节。如果中间件不允许请求继续,则请求将终止。因此,中间件可以通过控制请求的流向来控制请求的处理。

中间件是否支持跨请求共享数据?

中间件可以支持跨请求共享数据。但具体实现方式取决于使用的 Web 框架和语言。

例如,在 Laravel 框架中,可以使用会话存储来在多个请求之间共享数据。此外,还可以使用全局变量或缓存存储来共享数据

中间件如何控制请求的流向?

中间件可以控制请求的流向通过对请求进行预处理并决定是否继续传递请求或响应。中间件通过检查请求的状态或内容并执行相应的处理来实现请求的控制。

例如,在 Laravel 中,您可以使用中间件来检查用户是否已登录,如果没有登录,则不传递请求,并将用户重定向到登录页面。此外,中间件还可以用于检查用户是否具有指定的权限,并在必要时阻止请求的流向。

因此,通过使用中间件,可以控制请求的流向,确保应用程序的安全性和数据一致性。

你能举一个实际项目中使用中间件的例子吗?

我曾在后台租房管理中写过中间件的访问权限。根据访问的用户和权限进行判断。没有的进行拦截。这样做的好处就是可以保证我们租房系统管理后台的安全性,让安全性能大大提高

参考网址:

laravel中文手册

探索 Laravel 中间件的力量:理解其功能和优势

相关推荐
BingoGo12 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php
JaguarJack12 小时前
当你的 PHP 应用的 API 没有限流时会发生什么?
后端·php·服务端
BingoGo1 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php
JaguarJack1 天前
OpenSwoole 26.2.0 发布:支持 PHP 8.5、io_uring 后端及协程调试改进
后端·php·服务端
JaguarJack2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
后端·php·服务端
BingoGo2 天前
推荐 PHP 属性(Attributes) 简洁读取 API 扩展包
php
BingoGo4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·laravel
JaguarJack4 天前
告别 Laravel 缓慢的 Blade!Livewire Blaze 来了,为你的 Laravel 性能提速
后端·php·laravel
郑州光合科技余经理4 天前
代码展示:PHP搭建海外版外卖系统源码解析
java·开发语言·前端·后端·系统架构·uni-app·php
QQ5110082854 天前
python+springboot+django/flask的校园资料分享系统
spring boot·python·django·flask·node.js·php