今天想重构下代码结构:  BaseController.php 放置公共的中间件  class BaseController  {  public function __construct(){  $this->middleware('login');    }  }  IndexController.php 继承 BaseController  class IndexController extends BaseController  {  $user;  // 存储登录用户实例  public function __construct(){  parent::__constuct();  $this->user = Auth::user();  }  }  --------------------  如上代码,一直报错!提示获取不到用户实例!  各种测试,kernel.php, route.php, BaseController, middleware写法,等等,找不到问题。甚至一度怀疑 parent::__contruct()继承不对...  最终发现,是构造函数和中间件的执行顺序有问题:  1.先执行构造函数  2.再调用中间件  所以,我的问题就是,login中间件要求用户登录,而构造函数又先执行了,直接获取用户信息,还未登录呢!  百度发现一篇文章,描述了这个问题:  https://laravel-china.org/topics/3218/laravel53-middleware-and-controller-construction-method-execution-sequence-problem  /*  它里面提到了一句:  不可在构造函数中,直接获取到session变量或认证后的用户实例!因为中间件还未启动!  这个描述的不准确!  在用户登录后,构造函数中,自然就获取到session变量或认证后的用户实例!  主要还是中间件未在之前执行!说白了就是顺序的问题!  */  解决方法:  都只能在route.php 中了  1>要么使用 route::get()->middle('login')  2>要么使用 route::get(['middleware' => 'login', xxx])  最好的方法,应该是使用路由组 route::group(['middleware' => 'login'])  或者是:  抛弃在控制器中使用用户实例  

laravel构造函数和中间件执行顺序问题相关推荐

  1. Static、构造代码块快、构造函数等的执行顺序

    前言 今天分享的是关于在程序中代码的执行顺序,零零散散写了很多随记,总结起来蛮费时间的,希望大家给个关注,多多关注新人哈,废话不多说,还是老规矩,代码穿插注释的总结方式. 1.代码执行顺序 /*** ...

  2. [转载] java构造函数初始化与执行顺序问题

    参考链接: Java构造函数 构造函数与类名 a. 类中的构造方法可以省略不写的 b. 构造方法必须跟类名相同,普通的类方法能与类同名的,但是要返回一个值. c. 构造方法都在new 对象的时候调用的 ...

  3. django中的中间件执行顺序

    中间件是什么? 本质上是一些类.在经过view之前一系列执行的方法. 中间件: process_request process_view process_template process_except ...

  4. 什么是koa中间件,他们的执行顺序是什么样的?

    koa中间件 koa中,中间件分为应用级和路由级 //应用级 app.use(async (ctx, next) => { //应用级中间件 ,先执行中间件,再匹配路由console.log(& ...

  5. 静态代码块、非静态代码块、构造函数三者执行顺序

    主要探讨一下关于静态代码块,非静态代码块,构造函数的执行顺序. 如有错误,欢迎指出. 首先: 静态成员变量和静态代码块的优先级是一样的,先定义的先执行. 在创建一个对象的时候会执行非静态代码块和构造函 ...

  6. 初识洋葱模型,分析中间件执行过程,浅析koa中间件源码

    前言 作为洋葱模型的第一篇文章,这里仅介绍了一些入门级知识,比如 了解洋葱模型执行顺序 分析部分 koa 中间件的源码来加深对中间件的认识 为第二篇文章:分析洋葱模型实现原理,在自己项目中接入洋葱模型 ...

  7. java静态/动态成员变量、初始化块,父类/子类构造函数执行顺序问题

    2019独角兽企业重金招聘Python工程师标准>>> /* * 几大原则 * 一.静态成员变量(Static) * 1.静态成员变量为类变量,所有对象共享同一内存空间 * 2.静态 ...

  8. 派生类构造函数和析构函数的执行顺序

    派生类继承了基类的成员,实现了代码的重复利用,但基类的构造函数和析构函数不能被继承.如果在派生类中需要对新增加的成员进行初始化,则需要加入派生类的构造函数.同样派生类也需要添加析构函数来实现一些结束工 ...

  9. java 继承类 变量、静态变量、构造函数执行顺序

    java 继承类 变量.静态变量.构造函数执行顺序 Java代码   class C{ static int prt(int i){ System.out.println(i); return i; ...

最新文章

  1. 在线生成 CSS3 的工具
  2. YunYang1994/tensorflow-yolov3 IndexError: list index out of range 解决办法
  3. cisco switch configuration
  4. 通过Java反编译揭开一些问题的真相
  5. 电脑基础操作_苹果电脑基础操作,和使用须知
  6. scala初学之Tuple、Array、Map、文件操作入门实战
  7. 织梦dedecms响应式自媒体图片新闻资讯网站模板
  8. Link-State协议的PRC计算详解
  9. 试题训练9 旋转矩阵(数组)
  10. 【excel技巧读书笔记007】此工作薄包含一个或多个无法更新的链接
  11. 2017美赛C题论文学习笔记
  12. 2022电工(中级)考试模拟100题模拟考试平台操作
  13. 计算机和数学 论文参考文献,数学与计算机参考文献外国 数学与计算机核心期刊参考文献哪里找...
  14. 【读书笔记】致加西亚的信(二)
  15. 帝国cms html5 编辑器,帝国cms后台编辑器自动排版插件
  16. Hej Stylus for Mac(手写笔画图工具)
  17. SAP系统架构和技术平台
  18. (JS)统计重复个数
  19. 摄像头模组 Golden Sample
  20. Endnote使用笔记01:如何在Endnote 20中导入GB/T7714-2015引文格式

热门文章

  1. JAVA大厂高频面试题及答案
  2. 计算机算法刘汉英PDF,操作系统原理(刘汉英)
  3. 怎么用计算机看,如何巧妙的查看电脑使用痕迹
  4. ios 各种锁的使用性能比较
  5. 统计两个IP地址之间的IP个数
  6. 利用shell和iptables实现自动拒绝恶意试探连接SSH服务
  7. P2Psim分析笔记(5)-EventGenerator and Observer
  8. Django编写RESTful API(二):请求和响应
  9. java多线程之yield
  10. 解决dom4j java.lang.NoClassDefFoundError: org/jaxen/JaxenException