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

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 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年前 评论

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