Laravel \Request::getSession()在控制器构造中返回NULL

Laravel \Request::getSession()在控制器构造中返回NULL,laravel,laravel-5,Laravel,Laravel 5,我想在每次加载页面时获取用户的会话id,因此我在控制器构造中使用\Request::getSession()->getId(),但是我得到了这个错误 Call to a member function getId() on null 如果我在任何路由方法中使用相同的代码,它都可以工作 如何解决此问题?尝试使用illumb\Support\Facades\Auth;Auth::getSession()->getId()这是Laravel的默认功能。会话数据在构造函数中不再可用。见: 泰勒的话:

我想在每次加载页面时获取用户的会话id,因此我在控制器构造中使用\Request::getSession()->getId(),但是我得到了这个错误

Call to a member function getId() on null
如果我在任何路由方法中使用相同的代码,它都可以工作


如何解决此问题?

尝试
使用illumb\Support\Facades\Auth;Auth::getSession()->getId()

这是Laravel的默认功能。会话数据在构造函数中不再可用。见:


泰勒的话:

在构造函数中使用session或auth是非常糟糕的,因为还没有发生任何请求,session和auth本质上与HTTP请求绑定。您应该在实际控制器方法中接收该请求,您可以使用多个不同的请求多次调用该方法。通过强制您的控制器在构造函数中解析会话或身份验证信息,您现在正在强制您的整个控制器忽略实际传入的请求,这可能会在测试等过程中导致重大问题。

这对我来说很有效:

public function __construct()
{
    // No session access from constructor work around
    $this->middleware(function ($request, $next) {
        \Request::getSession()->getId();
        return $next($request);
    });
}