Laravel框架对于中间件{参数}的深入运用以及请求参数的实战
Larravel
Larravel Breeze为构建Larravel应用程序提供了一个简单且最小化的起点,而Jetstream通过更强大的功能和额外的前端技术堆栈增强了应用程序功能。对于刚接触Lavel的人,我们建议在学习Lavel Jetstream之前先学习Lavel Breeze。 Jetstream为Lavel提供了设计精美的应用程序脚手架代码,包括登录、注册、邮箱验证、双重身份验证、会话管理、基于Lavel Sanctum的API支持以及可选的团队管理功能。Jetstream使用Tailwind CSS设计样式,并提供Livewire或Inertia Js驱动的前端脚手架技术堆栈供选择。
中间件:
所见,如果请求参数中的age小于或等于200,中间件将向客户端返回HTTP重定向;否则,请求将被传递。可以通过调用回调函数
request来传递请求。 注意:此时,只定义了中间件的逻辑。为了使中间件有效,需要在指定的路由中注册它。我们很快将在下面的注册中间件部分中教如何做到这一点。 理解中间件的最佳方法是将其视为HTTP请求在到达目标操作之前必须经过的“层”。每一层将检查请求,并可以完全拒绝它。 注意:所有中间体都在服务容器中解析,因此可以在中间件的构造函数中提示任何依赖项。
<?php
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
public function handle($request, Closure $next)
{
if ($request->age <= 200) {
return redirect('/');
}
return $next($request);
}
}
<?php
namespace App\Http\Middleware;
use Closure;
class BeforeMiddleware
{
public function handle($request, Closure $next)
{
// Perform action
return $next($request);
}
}
<?php
namespace App\Http\Middleware;
use Closure;
class AfterMiddleware
{
public function handle($request, Closure $next)
{
$response = $next($request);
// Perform action
return $response;
}
}
将中间件分配给指定的路由,如果要将中间件分配给指定的路由,应首先在app/Http/Kernel中设置。默认情况下,此类的$routeMiddleware属性包含Larravel提供的中间件。要添加自己的中间件,只需将其附加到以下内容并为其分配一个密钥。
Route::get('/hello', function () {
//
})->middleware('age', 'auth');
有时可能希望通过指定密钥名称将相关中间件分配给同一组,以便更容易地将其分配给路由。这可以通过使用HTTP内核提供的$middlewareGroups属性来实现。 Larravel提供了两个开箱即用的中间件组:web和api,它们分别包含可应用于web和api路由的通用中间件:
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
'auth:api',
],
];
中间件参数
终端中间件可以理解为后端处理中间件。有时,在HTTP响应发送到浏览器后,中间件可能需要做一些工作。例如,Larave中内置的会话中间件将在响应发送到浏览器后将会话数据写入内存。要实现此功能,您需要定义一个终止中间件,并向中间件添加一个终止方法 终止方法将接收请求和响应作为参数。在定义了终端中间件之后,需要将其添加到app/Http/Kernel PHP文件中。 在中间件上调用terminate方法时,Larravel将从服务容器中获取中间件的新实例。如果要在调用handle和terminate方法时使用相同的中间件实例,则需要使用容器提供的singleton方法以单个实例的方式将中间件注册到容器中。通常,这需要在AppServiceProvider PHP注册方法中完成:
<?php
namespace Illuminate\Session\Middleware;
use Closure;
class StartSession
{
public function handle($request, Closure $next)
{
return $next($request);
}
public function terminate($request, $response)
{
// 存储session数据...
}
}
use App\Http\Middleware\TerminableMiddleware;
/**
* Register any application services.
*
* @return void
*/
public function register()
{
$this->app->singleton(TerminableMiddleware::class);
}
在HTTP内核中定义中间件后,可以使用中间件方法将其分配给路由
相关文章
- XML 总结
- Scala 安装及环境配置
- Servlet 表单数据
- C 标准库 – 参考手册
- LeetCode 212. 单词搜索 II -- 字典树+dfs
- 智能催收系统中自然语言理解模块设计
- 【网页设计】期末大作业:化妆品主题——绿色大气的html5响应式化妆品护肤品肌肤网页设计(11页)
- sed学习与实践1:sed基本指令
- selenium 自动化测试
- 【canvas教程】实现画布拖动、定点缩放,支持手势与鼠标滚轮操作
- 13.2 GAS与属性
- 论文阅读笔记《Deep Learning of Graph Matching》
- C语言学习之路(基础篇)—— 数组和字符串 02
- 人工智能2021年10大应用
- JUC-原子操作类之18罗汉增强
- 浅析量化交易程序化的优势
- 1. 微服务之Eureka服务注册发现
- 自动化测试 | 测试老鸟总结,你们项目自动化测试实施成功与否的因素
- Java教程
- Java快速入门