laravel构造函数和中间件执行顺序问题
今天想重构下代码结构: 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构造函数和中间件执行顺序问题相关推荐
- Static、构造代码块快、构造函数等的执行顺序
前言 今天分享的是关于在程序中代码的执行顺序,零零散散写了很多随记,总结起来蛮费时间的,希望大家给个关注,多多关注新人哈,废话不多说,还是老规矩,代码穿插注释的总结方式. 1.代码执行顺序 /*** ...
- [转载] java构造函数初始化与执行顺序问题
参考链接: Java构造函数 构造函数与类名 a. 类中的构造方法可以省略不写的 b. 构造方法必须跟类名相同,普通的类方法能与类同名的,但是要返回一个值. c. 构造方法都在new 对象的时候调用的 ...
- django中的中间件执行顺序
中间件是什么? 本质上是一些类.在经过view之前一系列执行的方法. 中间件: process_request process_view process_template process_except ...
- 什么是koa中间件,他们的执行顺序是什么样的?
koa中间件 koa中,中间件分为应用级和路由级 //应用级 app.use(async (ctx, next) => { //应用级中间件 ,先执行中间件,再匹配路由console.log(& ...
- 静态代码块、非静态代码块、构造函数三者执行顺序
主要探讨一下关于静态代码块,非静态代码块,构造函数的执行顺序. 如有错误,欢迎指出. 首先: 静态成员变量和静态代码块的优先级是一样的,先定义的先执行. 在创建一个对象的时候会执行非静态代码块和构造函 ...
- 初识洋葱模型,分析中间件执行过程,浅析koa中间件源码
前言 作为洋葱模型的第一篇文章,这里仅介绍了一些入门级知识,比如 了解洋葱模型执行顺序 分析部分 koa 中间件的源码来加深对中间件的认识 为第二篇文章:分析洋葱模型实现原理,在自己项目中接入洋葱模型 ...
- java静态/动态成员变量、初始化块,父类/子类构造函数执行顺序问题
2019独角兽企业重金招聘Python工程师标准>>> /* * 几大原则 * 一.静态成员变量(Static) * 1.静态成员变量为类变量,所有对象共享同一内存空间 * 2.静态 ...
- 派生类构造函数和析构函数的执行顺序
派生类继承了基类的成员,实现了代码的重复利用,但基类的构造函数和析构函数不能被继承.如果在派生类中需要对新增加的成员进行初始化,则需要加入派生类的构造函数.同样派生类也需要添加析构函数来实现一些结束工 ...
- java 继承类 变量、静态变量、构造函数执行顺序
java 继承类 变量.静态变量.构造函数执行顺序 Java代码 class C{ static int prt(int i){ System.out.println(i); return i; ...
最新文章
- 在线生成 CSS3 的工具
- YunYang1994/tensorflow-yolov3 IndexError: list index out of range 解决办法
- cisco switch configuration
- 通过Java反编译揭开一些问题的真相
- 电脑基础操作_苹果电脑基础操作,和使用须知
- scala初学之Tuple、Array、Map、文件操作入门实战
- 织梦dedecms响应式自媒体图片新闻资讯网站模板
- Link-State协议的PRC计算详解
- 试题训练9 旋转矩阵(数组)
- 【excel技巧读书笔记007】此工作薄包含一个或多个无法更新的链接
- 2017美赛C题论文学习笔记
- 2022电工(中级)考试模拟100题模拟考试平台操作
- 计算机和数学 论文参考文献,数学与计算机参考文献外国 数学与计算机核心期刊参考文献哪里找...
- 【读书笔记】致加西亚的信(二)
- 帝国cms html5 编辑器,帝国cms后台编辑器自动排版插件
- Hej Stylus for Mac(手写笔画图工具)
- SAP系统架构和技术平台
- (JS)统计重复个数
- 摄像头模组 Golden Sample
- Endnote使用笔记01:如何在Endnote 20中导入GB/T7714-2015引文格式
热门文章
- JAVA大厂高频面试题及答案
- 计算机算法刘汉英PDF,操作系统原理(刘汉英)
- 怎么用计算机看,如何巧妙的查看电脑使用痕迹
- ios 各种锁的使用性能比较
- 统计两个IP地址之间的IP个数
- 利用shell和iptables实现自动拒绝恶意试探连接SSH服务
- P2Psim分析笔记(5)-EventGenerator and Observer
- Django编写RESTful API(二):请求和响应
- java多线程之yield
- 解决dom4j java.lang.NoClassDefFoundError: org/jaxen/JaxenException