📅  最后修改于: 2023-12-03 15:23:42.919000             🧑  作者: Mango
在 Laravel 中,中间件提供了一种方便的方式来过滤 HTTP 请求,例如验证用户是否已登录或具有特定权限。 Laravel 提供了许多内置的中间件,同时也允许开发人员创建自己的中间件。更重要的是,Laravel 还支持将多个中间件链接在一起以实现更多的复杂过滤需求。
auth
中间件用于验证用户是否已登录。如果用户未登录,则会重定向到登录页面。以下是使用 auth
中间件的示例:
Route::get('/dashboard', function () {
// 只有已登录用户才能访问这个页面
})->middleware('auth');
throttle
中间件用于限制请求的频率。这可以防止某些恶意行为,比如暴力密码破解。以下是使用 throttle
中间件的示例:
Route::post('/login', function () {
// 登录逻辑
})->middleware('throttle:5,1');
上面的示例将限制每秒钟最多只能有 5 个登录请求。
guest
中间件用于验证用户是否未登录。如果用户已登录,则会重定向到指定的 URL。以下是使用 guest
中间件的示例:
Route::get('/login', function () {
// 只有未登录用户才能访问登录页面
})->middleware('guest');
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 的路由
});
您可以链接任意数量的中间件以实现更复杂的过滤需求。例如,以下代码链接了 auth
、throttle
和 my-middleware
三个中间件:
Route::post('/post', function () {
// 发布新帖子的逻辑
})->middleware(['auth', 'throttle:5,1', 'my-middleware']);
以上是多个中间件 Laravel - PHP 的介绍。了解和运用中间件可以让您更好地利用 Laravel 提供的功能。