首页 > 作文

Laravel5.1框架注册中间件的三种场景详解

更新时间:2023-04-07 14:59:13 阅读: 评论:0

本文实例讲述了laravel5.1框架注册中间件的三种场景。分享给大家供大家参考,具体如下:

在laravel中注册中间件主要有三种场景,一种给控制器中的方法进行注册,一种是给整个控制器进行注册,最后一种是给全局注册中间件。

1、在控制器中的方法中注册中间件

这种需求是最为常见,这个例子是给indexcontroller中的index方法添加中间件。

route::get('/', ['middleware'=>['app\http\middleware\emailmiddleware'],'大雁塔位于我国哪个城市us'=>'indexcontroller@index']);
2、在整个控制器中注册中间件

这种需求有的时候也会出现,如果给整个控制器中注册中间件,那么这个控制器中的所有方法都注册了该中间件。跟我一起来找到答案!

控制器基类(controller.php)

首先来看一下控制器基类,可以看到controller类继承了bacontroller类,而bacontroller的路径是illuminate\routing\controller,然后我们来看看laravel的源码。

<?phpnamespace app\http\controllers;u illuminate\foundation\bus\dispatchesjobs;u illuminate\routing\controller as bacontroller;u illuminate\foundation\validation\validatesrequests;u illuminate\foundation\auth\access\authorizesrequests;abstract class controller extends bacontroller{  u authorizesrequests, dispatchesjobs, validatesrequests;}

bacontroller类

从源码中我们可以看到有一个属性为middleware,这个middleware属性就是我们要找的,所以只要在需要注册的控制器下使用这个属性即可完成注册。

protected $middleware = [];
<?phpnamespace illuminate\routing;u badmethodcallexception;u symfony\component\httpkernel\exception\notfoundhttpexception;abstract class controller{  /**   * the middleware reg收获istered on the controller.   *   * @var array   */  protected $middleware = [];  /**   * register middleware on the controller.   *   * @param array|string|\closure $middleware   * @param array  $options   * @return \illuminate\routing\controllermiddlewareoptions   */  public function middleware($middleware, array $options = [])  {    foreach ((array) $middleware as $m) {      $this->middleware[] = 多源流理论[        'middleware' => $m,        'options' => &$options,      ];    }    return new controllermiddlewareoptions($opt绿茶的副作用ions);  }  /**   * get the middleware assigned to the controller.   *   * @return array   */  pu空间背景音乐播放器blic function getmiddleware()  {    return $this->middleware;  }  /**   * execute an action on the controller.   *   * @param string $method   * @param array  $parameters   * @return \symfony\component\httpfoundation\respon   */  public function callaction($method, $parameters)  {    return call_ur_func_array([$this, $method], $parameters);  }  /**   * handle calls to missing methods on the controller.   *   * @param array  $parameters   * @return mixed   *   * @throws \symfony\component\httpkernel\exception\notfoundhttpexception   */  public function missingmethod($parameters = [])  {    throw new notfoundhttpexception('controller method not found.');  }  /**   * handle calls to missing methods on the controller.   *   * @param string $method   * @param array  $parameters   * @return mixed   *   * @throws \badmethodcallexception   */  public function __call($method, $parameters)  {    throw new badmethodcallexception("method [{$method}] does not exist.");  }

给整个控制器注册中间件

我们选用系统的authenticate中间件来举例,这个中间件是用于检测用户是否登录。

注意:中间件的名称为键,值可以是一个空数组

protected $middleware = ['\app\http\middleware\authenticate'=>[]];
3、全局注册中间件

打开app/http/kernel.php,这是一个内核文件,可以看到一个属性$middleware,我们只需要将我们自定义的中间件的路径添加到这个$middleware 这个属性中即可。

此外还有一个$routemiddleware属性,使用这个属性可以根据路由来注册中间件。
我们的路由有:goods/infogoods/detail两个路由器
我们可以将$routemiddleware属性添加一行

'goods.*' => \app\http\middleware\goodsmiddleware::class,
<?phpnamespace app\http;u illuminate\foundation\http\kernel as httpkernel;class kernel extends httpkernel{  /**   * the application's global http middleware stack.   *   * @var array   */  protected $middleware = [    \illuminate\foundation\http\middleware\checkformaintenancemode::class,    \app\http\middleware\encryptcookies::class,    \illuminate\cookie\middleware\addqueuedcookiestorespon::class,    \illuminate\ssion\middleware\startssion::class,    \illuminate\view\middleware\shareerrorsfromssion::class,    \app\http\middleware\verifycsrftoken::class,  ];  /**   * the application's route middleware.   *   * @var array   */  protected $routemiddleware = [    'auth' => \app\http\middleware\authenticate::class,    'auth.basic' => \illuminate\auth\middleware\authenticatewithbasicauth::class,    'guest' => \app\http\middleware\redirectifauthenticated::class,  ];}

本文发布于:2023-04-07 14:59:12,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/3836b60fce6e4c9329c762a7922ad944.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Laravel5.1框架注册中间件的三种场景详解.doc

本文 PDF 下载地址:Laravel5.1框架注册中间件的三种场景详解.pdf

下一篇:返回列表
标签:中间件   属性   控制器   器中
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图