关于中间件,在php-laravel中的定义就是对请求的一个过滤,相当于JSP技术中的filter的存在。需要知道编写了一个中间件可以配置在三个地方(就目前5.7版本而言)让其发挥作用,
具体需要看/app/Http/Kernal.php文件的定义。在这个文件中的Kernel类中有三个数组,数组上的注释写的已经很清楚了。

下面试着新建一个中间件,因为是测试,所以就针对单挑路由,所以配置到了$routeMiddleware这个数组中,下面记录下大致流程。代码啥的,参考laravel学院的博文。


php artisan make:middleware TestMiddleware #新建一个中间件

新建的中间件要启用,需要在/app/Http/Kernal.php中配置

下面看一下这个Kernal.php的文件:
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/ 
   //争对每一请求的中间件配置与下面的数组之中
protected $middleware = []; /**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [],
'api' => [],
]; /**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
//#######注释显示,配置在这里的中间件可以为单条路由或路由组所使用############
protected $routeMiddleware = [
//useradd
'test' => \App\Http\Middleware\TestMiddleware::class,
];
}

public function handle($request, Closure $next)
{
//对请求中的字段进行过滤,看是否满足要求,下面例子中的age参数 //可以为url路径中的参数
//http://xxx.xx/xx/xx/{age}/xx/xx #此时age是一个数值 //也可为url携带的参数
//http://xx.xx.xx?z=12&b=asdf&age=18 #此时是携带的参数 //或者如下这样,如下的请求age字段只需任意一个满足即可:
//http://asdxx.com/foo/{age}/bar?par1=val1&par2=val2&age=19 if($request->input('age')<18)
return redirect()->route('refuse');
return $next($request);
}

关于如何使用,请看laravel学院,不再重复

php.laravel.middleware的更多相关文章

  1. laravel middleware

    当你使用larvel创建一个相对比较复杂的web网站时,往往你的routes文件就会变得很庞大.一般来说在开始网站编码之前,最好做一个整体规划,把这些route逻辑上划分为不同的group,每一个gr ...

  2. PHP and laravel知识点小小积累

    function () use ($x, &$y){} 自从PHP5.3开始有了closure/匿名函数的概念,在这里的use关键词的作用是允许匿名函数capture到父函数scope 内存在 ...

  3. 手摸手教你让Laravel开发Api更得心应手

    https://www.guaosi.com/2019/02/26/laravel-api-initialization-preparation/ 1. 起因 随着前后端完全分离,PHP也基本告别了v ...

  4. laravel框架的中间件middleware的详解

    本篇文章给大家带来的内容是关于laravel框架的中间件middleware的详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. laravel中间件是个非常方便的东西,能将一些逻辑 ...

  5. laravel中间件-----------middleware

    middleware中间件 是访问到达服务器后在被对应的路由处理之前所经过的一层过滤层,故称中间件. 中间件是存放在app\http\middleware中,需要定一个 handle 处理方法,在ha ...

  6. Laravel 5.1 ACL权限控制 四 之middleware

    1.创建Middleware php artisan make:middleware MustBeAnAdmin 2.实现 MustBeAnAdmin.php中的handle方法,判断登录的用户是否为 ...

  7. 在Laravel中使用Middleware进行身份验证

    新建一个中间件: 方法写在handle中 判断用户是否登录而且是否是管理员,不是的话返回到主页 新建判断是否为管理员的方法 在kernel定义一个中间件,key是admin 注册群组路由:prefix ...

  8. Laravel 控制器的middleware中间件

    场景:活动开始前只能访问宣传页面,开始后才可以访问其他页面: 步骤: 新建中间件, 注册中间件, 使用中间件, 中间件的前置和后置操作. 控制器: public function activity0( ...

  9. laravel App\Kernel.php中的middleware、middlewareGroups、routeMiddleware

    万事万物总逃不出一个理字,程序尤其如此,你之所以活得轻松,是因为有人替你负重前行,帮你屏蔽掉了很多乱七八糟的事情,但总有一天你要直面这些事情.程序亦是如此,某个框架你用的很轻松,那是因为底层逻辑已经有 ...

随机推荐

  1. YII insert multiple records into a table

    $values = array(array(1,2),array(3,4),array(5,6),); $nbValues = count($values); $sql = 'INSERT INTO ...

  2. 设计模式课程 设计模式精讲 10-2 外观模式coding

    1 代码演练 1.1 代码演练1(不使用外观模式) 1.2 代码演练2(使用外观模式) 2 应用核心 2.1 核心 2.2 零碎知识点 1 代码演练 1.1 代码演练1(不使用外观模式) 需求: 木木 ...

  3. phpcms安装与使用

    安装完wamp(或phpstudy)之后,将phpcms的安装文件复制入C:\wamp\www(或C:\phpStudy\PHPTutorial\WWW)文件夹下: 打开phpcms_v9_UTF8\ ...

  4. python人脸对比

    import sys  import ssl  from urllib import request,parse    # client_id 为官网获取的AK, client_secret 为官网获 ...

  5. 解决Python2中文ascii编码的方法

    在YiiChina签到的时候,经常会看到有人在说说里面发群主是最帅的,yii 是 PHP 最好的框架,没有之一,就想到使用一言,在每天签到的时候也发一句话 同时使用方糖将内容推送到微信,防止有什么不对 ...

  6. leetcode295 Find Median from Data Stream

    """ Median is the middle value in an ordered integer list. If the size of the list is ...

  7. 新闻网大数据实时分析可视化系统项目——14、Spark2.X环境准备、编译部署及运行

    1.Spark概述 Spark 是一个用来实现快速而通用的集群计算的平台. 在速度方面, Spark 扩展了广泛使用的 MapReduce 计算模型,而且高效地支持更多计算模式,包括交互式查询和流处理 ...

  8. uni app中使用自定义图标库

    项目中难免会用到自定义图标,那在uni app中应该怎么使用呢? 首先, 将图标目录放在static资源目录下: 在main.js中引入就可以全局使用了 import '@/static/icon-o ...

  9. stm32 解析sbus

    转载 https://blog.csdn.net/Brendon_Tan/article/details/89854751 STM32 Futaba SBUS协议解析1. S.BUS1.1 协议介绍 ...

  10. struts2--验证器

    1.输入验证: --struts2提供了一些基于Xwork Validation Framework的内建验证程序,使用这些验证程序不需要变编程,只要在一个XML文件里进行声明,声明的内容如下: &g ...