在控制器构造方法中为什么获取不到`\Auth::guard ('Admin')->user ()`的值?

在控制器构造方法中为什么获取不到\Auth::guard('Admin')->user()的值,在构造方法与其他方法中打印打印\Auth::guard('Admin')得到的结果如下图。感觉是user: null导致的。但不知道是为什么
file

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
jltxwesley
最佳答案

控制器构造方法从5.3开始就已经无法获取 session 的值了:

在 Laravel 之前的版本中,尽管你能够在控制器的类构造方法中访问 session 变量和被认证的用户实例,但我们从未把这设计为框架的特性。在 Laravel 5.3 中,你无法再这样使用了,因为这个时候中间件还没有运行。

详情见5.3的升级文档:升级说明《Laravel 5.3 中文文档》
你可以使用基于中间件的闭包获取 session 里的值。

5年前 评论
讨论数量: 4
jltxwesley

控制器构造方法从5.3开始就已经无法获取 session 的值了:

在 Laravel 之前的版本中,尽管你能够在控制器的类构造方法中访问 session 变量和被认证的用户实例,但我们从未把这设计为框架的特性。在 Laravel 5.3 中,你无法再这样使用了,因为这个时候中间件还没有运行。

详情见5.3的升级文档:升级说明《Laravel 5.3 中文文档》
你可以使用基于中间件的闭包获取 session 里的值。

5年前 评论

@jltxwesley 知道为什么在构造方法中找不到session

5年前 评论
emoliezhu 2年前

@jltxwesley 构造方法执行时还未执行中间件的话,为什么下面的写法会生效?

public function __construct()
{
     $this->middleware('auth',  ['except' => ['index', 'show']]);
}
3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!