每次加载页面时,我想获取用户的会话ID,因此我在控制器构造中使用\ Request :: getSession()-> getId(),但出现此错误
Call to a member function getId() on null
如果我在任何路由方法中使用相同的代码,则可以使用。
我该如何解决?
答案 0 :(得分:0)
尝试use Illuminate\Support\Facades\Auth; Auth::getSession()->getId();
答案 1 :(得分:0)
这是Laravel的默认功能。会话数据在构造函数中不再可用。参见:
答案 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);
});
}