📜  多个中间件 laravel - PHP (1)

📅  最后修改于: 2023-12-03 15:23:42.919000             🧑  作者: Mango

多个中间件 Laravel - PHP

在 Laravel 中,中间件提供了一种方便的方式来过滤 HTTP 请求,例如验证用户是否已登录或具有特定权限。 Laravel 提供了许多内置的中间件,同时也允许开发人员创建自己的中间件。更重要的是,Laravel 还支持将多个中间件链接在一起以实现更多的复杂过滤需求。

内置的中间件
auth

auth 中间件用于验证用户是否已登录。如果用户未登录,则会重定向到登录页面。以下是使用 auth 中间件的示例:

Route::get('/dashboard', function () {
    // 只有已登录用户才能访问这个页面
})->middleware('auth');
throttle

throttle 中间件用于限制请求的频率。这可以防止某些恶意行为,比如暴力密码破解。以下是使用 throttle 中间件的示例:

Route::post('/login', function () {
    // 登录逻辑
})->middleware('throttle:5,1');

上面的示例将限制每秒钟最多只能有 5 个登录请求。

guest

guest 中间件用于验证用户是否未登录。如果用户已登录,则会重定向到指定的 URL。以下是使用 guest 中间件的示例:

Route::get('/login', function () {
    // 只有未登录用户才能访问登录页面
})->middleware('guest');
verify

verify 中间件用于验证用户的电子邮件地址或手机号码是否已验证。如果未验证,则会重定向到指定的 URL。以下是使用 verify 中间件的示例:

Route::get('/profile', function () {
    // 只有已验证电子邮件地址或手机号码的用户才能访问个人资料页面
})->middleware('verify');
自定义中间件

您还可以编写自己的中间件以执行自定义逻辑。要创建一个新的中间件,请使用以下 Artisan 命令:

php artisan make:middleware MyMiddleware

这将在 app/Http/Middleware 目录中创建一个名为 MyMiddleware 的新文件。您可以在其中编写自己的逻辑,例如:

<?php

namespace App\Http\Middleware;

use Closure;

class MyMiddleware
{
    public function handle($request, Closure $next)
    {
        // 执行自己的逻辑

        return $next($request);
    }
}

接下来您需要将中间件添加到您的路由中。您可以使用以下示例将中间件添加到路由组:

Route::middleware(['auth', 'my-middleware'])->group(function () {
    // 添加需要执行 auth 和 my-middleware 的路由
});
链接多个中间件

您可以链接任意数量的中间件以实现更复杂的过滤需求。例如,以下代码链接了 auththrottlemy-middleware 三个中间件:

Route::post('/post', function () {
    // 发布新帖子的逻辑
})->middleware(['auth', 'throttle:5,1', 'my-middleware']);

以上是多个中间件 Laravel - PHP 的介绍。了解和运用中间件可以让您更好地利用 Laravel 提供的功能。