📜  收集 laravel 过滤器 - PHP (1)

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

收集 Laravel 过滤器

在 Laravel 中,过滤器是用于处理请求或响应的中间件,也称作过滤器。它们可以用来修改请求、检查授权、转换数据等等。Laravel 提供了大量内置的过滤器,同时也允许你创建自定义的过滤器。

接下来将为大家介绍一些常用的 Laravel 过滤器,供开发者在实际开发中参考和使用。

内置过滤器
auth

该过滤器可以用于验证请求是否已经经过身份验证。如果请求未经过身份验证,则 Laravel 会自动将其重定向到登录页面。

使用方法:

Route::get('/dashboard', function () {
    // 只有经过身份验证的用户可以访问此路由
})->middleware('auth');
guest

与 auth 相反,guest 过滤器可用于验证请求是否未经过身份验证。如果请求已经经过身份验证,则 Laravel 会自动将其重定向到应用程序的默认页面。

使用方法:

Route::get('/login', function () {
    // 只有未经过身份验证的用户可以访问此路由
})->middleware('guest');
throttle

该过滤器用于限制频繁的请求。你可以指定要允许的请求数量和时间段。如果请求的频率超过了限制,Laravel 会返回一个 429 错误响应。

使用方法:

Route::middleware('throttle:60,1')->group(function () {
    Route::get('/api', function () {
        //
    });
});

该示例将限制每分钟的请求次数不超过 60 次。

forceJson

该过滤器将强制使用指定的响应格式(JSON)。如果请求未指定 Accept 头,则 Laravel 会在响应中添加一个 JSON 头。

使用方法:

Route::get('/api', function () {
    return ['foo' => 'bar'];
})->middleware('forceJson');
cors

该过滤器用于为跨域资源共享 (CORS) 添加必需的响应头。

使用方法:

Route::get('/api', function () {
    return ['foo' => 'bar'];
})->middleware('cors');

注意:使用该过滤器需要安装 fruitcake/laravel-cors 扩展包。

等等

除了以上这些内置的过滤器外,Laravel 还提供了其他许多可用的过滤器,例如:cache.headerssignedpassword.confirmcanverified 等等。

自定义过滤器

在 Laravel 中,你也可以轻松创建自定义过滤器。你只需定义一个中间件并将其添加到路由中即可。

例如,下面是一个简单的自定义过滤器,它检查请求是否带有某个参数:

<?php

namespace App\Http\Middleware;

use Closure;

class CheckParam
{
    public function handle($request, Closure $next, $parameter)
    {
        if (! $request->has($parameter)) {
            abort(404);
        }

        return $next($request);
    }
}

添加自定义过滤器到路由中:

Route::get('/users/{id}', function ($id) {
    // ...
})->middleware('checkparam:id');

该示例检查 /users/{id} 路由是否带有名为 id 的参数。如果该参数不存在,则返回 404 错误。

总结

Laravel 中有许多强大的内置过滤器和中间件,它们可以轻松处理请求和响应。同时,你也可以轻松地创建自定义过滤器来满足你的业务需求。