【问题标题】:Laravel 'Auth::user()' displaying false in '__construct' of a controller [duplicate]Laravel 'Auth::user()' 在控制器的 '__construct' 中显示 false [重复]
【发布时间】:2019-07-13 20:50:47
【问题描述】:

问题

Laravel 的方法Auth::check() 在我的控制器的__construct 方法中返回false,但它在使用的任何其他方法中返回true(当然,当我登录时)。我假设当程序遇到__construct 方法时,Auth 外观还没有完全准备好使用?或者类似的东西。

供参考,Request::path()Auth::check() 返回 false 的同一位置正常工作。

示例

public function __construct()
{
    dd(Auth::check()); // Returns False
    dd(Request::path()); // Returns full path as expected
}

public function dashboard()
{
    dd(Auth::check()); // Returns True
}

问题

如何使 Laravel Auth -> 'Illuminate\Support\Facades\Auth' 在我的控制器的 __construct 方法中可用。

【问题讨论】:

  • 这可能是您问题的答案:Can't call Auth::user() on controller's constructor
  • @vivek_23 感谢您提供可能的重复数据流,这真的很有帮助
  • 作为替代方案,您可以直接在控制器的构造函数中定义基于闭包的中间件引用 Laravel doc upgrade to 5.3
  • @HamzStramGram 我试过了,但它似乎对我不起作用,但是我通过为我想要的操作创建一个中间件解决了这个问题。

标签: php laravel authentication controller


【解决方案1】:

我决定将其移至中间件,因为从 Laravel 5.3 开始,您似乎无法再在控制器构造方法中访问 Auth

【讨论】:

    猜你喜欢
    • 2014-09-21
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2015-12-27
    相关资源
    最近更新 更多