在 Laravel 中,中间件是一种用于处理 HTTP 请求和响应的机制。它们允许你在请求到达应用程序之前或之后执行代码,例如身份验证、授权、缓存等。要在 Laravel 中编写一个中间件,请按照以下步骤操作:
php artisan make:middleware YourMiddlewareName
这将在 app/Http/Middleware
目录下创建一个名为 YourMiddlewareName.php
的新文件。
handle
方法中,你可以编写你的逻辑。例如,如果你想在用户访问某个路由之前检查他们是否已登录,你可以这样做:<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class YourMiddlewareName
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
if (auth()->check()) {
// 用户已登录,继续处理请求
return $next($request);
}
// 用户未登录,重定向到登录页面
return redirect('/login');
}
}
app/Http/Kernel.php
文件中。在 $routeMiddleware
数组中添加一个新的键值对,键是你的中间件名称,值是中间件的完整类名:protected $routeMiddleware = [
// ...
'your_middleware_name' => \App\Http\Middleware\YourMiddlewareName::class,
];
routes/web.php
或 routes/api.php
文件中,将你的中间件名称添加到需要使用它的路由定义中:Route::get('/your-protected-route', 'YourController@yourMethod')->middleware('your_middleware_name');
这样,当用户尝试访问 /your-protected-route
时,将首先执行 YourMiddlewareName
中间件。如果用户已登录,请求将继续处理;如果用户未登录,他们将被重定向到登录页面。