假设用户已退出并且用户访问此页面http://domain.com/admin
在控制器中,我有__construct
这样的方法:
public function __construct() {
$this->middleware('auth');
dd("Hello World");
}
为什么屏幕上会显示“Hello World”? $this->middleware
应首先被执行并通过auth中间件重定向到Login Page,因为用户尚未登录。
但是,如果我删除dd("Hello World");
,请执行以下操作:
public function __construct() {
$this->middleware('auth');
}
工作正常并重定向到登录页面。
答案 0 :(得分:2)
因为$this->middleware
方法实际上将您的控制器方法/操作绑定到您定义的auth
中间件。相反,当您的路线被调用时,它不会被执行。
参考: Laravel docs
在控制器中指定中间件更方便 构造函数。使用控制器中的中间件方法 构造函数,您可以轻松地将中间件分配给控制器 动作
并且在点击此路线时:http://domain.com/admin
。实际上,在控制器对象实例化并绑定中间件后,控制器的index
方法将触发。