\ Request :: getSession()在Controller构造中返回NULL

时间:2019-04-26 17:20:52

标签: laravel laravel-5

每次加载页面时,我想获取用户的会话ID,因此我在控制器构造中使用\ Request :: getSession()-> getId(),但出现此错误

Call to a member function getId() on null

如果我在任何路由方法中使用相同的代码,则可以使用。

我该如何解决?

4 个答案:

答案 0 :(得分:0)

尝试use Illuminate\Support\Facades\Auth; Auth::getSession()->getId();

答案 1 :(得分:0)

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

laravel - Can't get session in controller constructor

答案 2 :(得分:0)

泰勒的话:

在构造函数中使用会话或身份验证非常糟糕,因为尚未发生任何请求,并且会话和身份验证已固有地绑定到HTTP请求。您应该以实际的控制器方法收到此请求,您可以使用多个不同的请求多次调用该方法。现在,通过强制控制器解析构造函数中的会话或身份验证信息,您将强制整个控制器忽略实际的传入请求,这可能会在测试等问题上引起严重的问题。

答案 3 :(得分:0)

这对我有用:

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