博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HTTP 中间件相关
阅读量:6345 次
发布时间:2019-06-22

本文共 1336 字,大约阅读时间需要 4 分钟。

hot3.png

HTTP 中间件为过滤访问你的应用的 HTTP 请求提供了一个方便的机制。例如,Laravel 默认包含了一个验证用户的中间件。如果没有经过身份验证,中间件将会将用户重定向至登录页面。然而,如果用户经过了验证,中间件将会允许请求继续在应用中执行下去。

当然,除了身份验证,中间件也可以被用来执行多种多样的任务。一个 CORS 中间件可能负责在所有应用发出去的响应中加入适当的头部。一个日志中间件可能记录所有发送给应用的请求的日志。

Laravel 框架已经自带了一些中间件,包括维护、身份验证、 CSRF 保护等等。所有中间件都位于 app/Http/Middleware 文件夹中。

php artisan make:middleware OldMiddleware
public function handle($request, Closure $next)    {        if ($request->input('age') <= 200) {            return redirect('home');        }        return $next($request);    }

 

正如你看到的,如果用户给出的 age 小于或等于 200,中间件会给客户端返回一个 HTTP 重定向;否则,请求会继续在应用程序中执行下去。只用调用带有 $request 的$next 方法,就可以将请求继续在应用中传递到更深层的逻辑(允许跳过中间件)。

在抵达应用程序之前,请求层层通过一系列中间件是最好的设计。每一层可以对其进行检查,甚至是完全拒绝请求。

 

 

一旦中间件在 HTTP kernel 文件中被定义,你可以在路由选项数组中使用 middleware键来指派:

Route::get('admin/profile', ['middleware' => 'auth', function () {    //}]);

 

Route::get('/', ['middleware' => ['first', 'second'], function () {    //}]);

 

Route::get('/', function () {    //}])->middleware(['first', 'second']);

public function handle($request, Closure $next, $role)    {        if (! $request->user()->hasRole($role)) {            // Redirect...        }        return $next($request);    }

中间件参数可以在定义路由时将中间件的名称和参数用 : 隔开来指定。多个参数应当用逗号隔开:

Route::put('post/{id}', ['middleware' => 'role:editor', function ($id) {    //}]);

 

转载于:https://my.oschina.net/sharesuiyue/blog/788977

你可能感兴趣的文章
网络虚拟化
查看>>
activemq的消息确认机制ACK
查看>>
SpringBoot入坑-配置文件使用
查看>>
apache2.4.33伪静态配置入门教程(1)
查看>>
银行卡的三个磁道
查看>>
OpenSSL 提取 pfx 数字证书公钥与私钥
查看>>
Keepalived详解(四):通过vrrp_script实现对集群资源的监控【转】
查看>>
CollapsingToolbarLayoutDemo【可折叠式标题栏,顺便带有CardView卡片式布局】
查看>>
CentOS7.4安装配置mysql5.7 TAR免安装版
查看>>
解决IE二级链接无法打开故障
查看>>
Windows phone应用开发[16]-数据加密
查看>>
SQL Server 迁移数据到MySQL
查看>>
通用数据压缩算法简介
查看>>
The next Industry Standard in IT Monitoring, a python implementation Nagios like tool --- Shinken
查看>>
(笔记)找工作,该怎么进补
查看>>
div的显示和隐藏以及点击图标的更改
查看>>
(轉貼) Ubuntu將在ARM平台netbook上現身 (SOC) (News) (Linux) (Ubuntu)
查看>>
SQL注入测试工具:Pangolin(穿山甲)
查看>>
在html 的img属性里只显示图片的部分区域(矩形,给出开始点和结束点),其他部份不显示,也不要拉伸...
查看>>
程序员第二定律:量化管理在程序员身上永无可能
查看>>