php中间件,php中间件 (middleware)
什么是中间件中间件顾名思义是指在请求和响应中间,进行请求数据的拦截处理,数据校验,并且进行逻辑处理后判断是否允许进入下一个中间件。中间件分为前缀中间件,后置中间件。可以用于权限认证。日志记录等
图样图片源至koa的官方图
Laravel中间件
生成中间件类首先通过Laravel自带的artisan 命令生成一个中间件php artisan make:middleware TestMiddleware
这个命令是在Laravel项目的app/Http/Middleware目录下创建TestMiddleware类。
进行我们中间件的请求校验。如果请求参数不合法我们进行重定向。
<?php
namespace App\Http\Middleware;
use Closure;
class TestMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if($request->input('token') === 'engkan'){ //判断请求token是否合法
return $next($request);
}
return redirect('/');
}
}
注册中间件在Laravel5.6版本里,有三种中间件类型。全局中间件,中间件组,路由中间件
下面我们注册路由中间件做测试,配置Laravel项目的app/Http目录下的Kernel.php类文件,在$routeMiddleware上添加我们注册我们刚刚的中间件/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'test' => Middleware\TestMiddleware::class
];
现在我们可以在路由使用我们我们刚刚注册的中间件了,进入Laravel项目的routes目录下的web.php去添加我们的中间件查看是否生效<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Route::get('/test', function () {
return 'test';
})->middleware('test');
查看效果现在我们开启laravel服务打开浏览器查看效果php artisan serve
打开不带token页面 http://127.0.0.1:8000/test
打开带token的页面 http://127.0.0.1:8000/test?token=engkan
发现不带token的页面被重定向了,果不其然发现和我们想的一样。现在我们大概对中间件有了一定认识,当然Laravel的中间件不止是这些。
实现一个简单的中间件
本文由 潘文伟 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Sep 14, 2018 at 02:14 pm
php中间件,php中间件 (middleware)相关推荐
- web中间件_HTTP中间件机制实现与原理 - 从零开始写GO-API框架
大家好,很高兴您能阅读这篇文章. 最近在投稿公众号时发现从未做过自我介绍,首先请允许我介绍一下自己. 我叫张晓亮,就职于新浪微博,Golang的忠实粉丝,平时的爱好看看书.撸撸码,典型的程序员性格,最 ...
- {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证...
Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...
- 什么是中间件,中间件有什么作用
什么是中间件,中间件有什么作用 文/花纯春 @ http://blog.csdn.net/metababy 平时是埋头写代码,不闻窗外事,对盛传于世的"中间件",也只是停留在听 ...
- 什么是中间件?中间件的作用,怎么使用中间件及应用场景
什么是中间件?中间件的作用,怎么使用中间件及应用场景 如果你想修改请求,例如被传送到view中的HttpRequest对象. 或者你想修改view返回的HttpResponse对象,这些都可以通过中间 ...
- 什么是中间件,中间件是什么意思?
经常听人提起"中间件"这个名词,什么是中间件,中间件是什么意思呢?中间件是指的架构吗? 中间件(Middleware)通常是指在一个大型分布式的系统中,负责各个不同组件(Compo ...
- linux运维中的中间件,linux中间件Nginx的安装过程
下面一步一步走进中间件"Nginx"中间件的安装过程中 第一步下载nginx件,本站不提供下载哈,各位看官根据自己linux的版本号下载相对应的nginx中间件.,本站以<n ...
- js reduce实现中间件_Laravel中间件实现原理及实例分析
Laravel中间件实现原理详解 本文实例讲述了Laravel的中间件实现原理.分享给大家供大家参考,具体如下: #1 什么是中间件? 对于一个Web应用来说,在一个请求真正处理前,我们可能会对请求做 ...
- django中间件及中间件实现的登录验证
1.定义 一个用来处理Django的请求和响应的框架级别的钩子(函数),相对比较轻量级,并且在全局上改变django的输入与输出(使用需谨慎,否则影响性能) 直白的说中间件就是帮助我们在视图函数执行之 ...
- koa2 mysql 中间件_Koa2——中间件
1.什么是koa2中间件? koa对网络请求采用了中间件的形式处理,中间件可以介入请求和相应的处理,是一个轻量级的模块,每个中间负责完成某个特定的功能.中间件的通过next函数联系,执行next()后 ...
最新文章
- python pdb 基础调试
- C++类对象在内存中的布局
- phpvirtualbox+Virtualbox完整虚拟化环境部署
- HALCON示例程序measure_grid.hdev使用XLD分割键盘轮廓
- Acwing 1081. 度的数量(以及本人对数位dp的浅薄理解)
- DNN使用非80端口和总是跳转到http://localhost问题的解决
- PCB布局,布线技巧总结
- mysql无损复制_MySQL无损复制(转)
- C/C++ 实现文件透明加解密
- qq空间html倒计时,空间倒计时flash代码,有图
- python 10的次方_python e次方
- Jmeter的元件使用介绍:取样器详解
- 如何解决 Elasticsearch 中未分配的分片
- git memery 后 push到远程,如何回滚
- 服务器安装系统提示加载驱动程序,解决安装win7的提示“加载驱动程序”的问题...
- 2021中国薪酬指南:全球半数雇主计划加薪并恢复至正常招聘水平
- Android中Assets文件路径
- 商业模式笔记以及体悟
- 洛谷P2738 [USACO4.1]篱笆回路Fence Loops(Floyed求最小环)
- 组图:1936年柏林奥运会
热门文章
- tar 解压出指定文件到指定目录
- 如何制作一个横版格斗过关游戏(一) Cocos2d-x 2.0.4
- Oracle不让小数四舍五入,Oracle特殊情况下数字四舍五入问题
- 【python】代码实现计算天数倒计时
- iOS快速集成支付宝(完善版)
- Laya 多国家语言功能开发
- python数据分析与挖掘实践大作业_数据挖掘大作业最终报告.PDF
- js垃圾回收机制详解
- Jquery.on() 与 .blur() 详解
- 中缀表达式转后缀表达式【转换步骤】