太奇怪,为什么会 Trying to get property 'headers' of non-object 错误
我和同事在学习laravel。按照本站的《Web 开发实战入门 ( Laravel 6.x ) 》在学习。
但是遇到一个怪问题。
在学习到 第八章,第三节,权限系统,的时候
8.3. 权限系统《L01 Laravel 教程 - Web 开发实战入门 ( Laravel 6.x )》
为了只允许未登陆用户访问注册和登陆页面,写了一下代码。具体见下图红框。
同时按照教程修改了以下文件
这时候,怪事出现了。我自己按照教程做,是完全没问题的。
但是同事做在这里,未登录页面访问注册和登录页面的时候,报错,错误提示
Trying to get property 'headers' of non-object
很奇怪,最后按照下面这个帖子的办法,解决了问题
blog.csdn.net/Y_X_ngu/article/deta...
app/Http/Middleware/RedirectIfAuthenticated.php
<?php
.
.
.
class RedirectIfAuthenticated
{
.
.
.
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
session()->flash('info', '您已登录,无需再次操作。');
return redirect('/');
}
return $next($request);
.
.
}
}
只是增加了一句
return $next($request);
问题就解决了。
但我想知道为什么会出现这个错误,我们用的都是win系统。环境用的是phpstudy搭建的。php是7.3.4。mysql是8.0。
为什么我的正常。我同事的出错。
另外,上面增加的这一句代码是什么意思呢?没搞明白。
我搜索了一下,发现论坛里好几个人都遇到这个问题了。
具体见之前别人的发帖
问答:Trying to get property 'headers' of non-object
中间件肯定要加这个啊,代表请求继续向下传递。
原本的代码本来就是带有 return $next($request);的,估计是你们把它删了,直接把教程的代码复制了过去。
教程中这些点代表是有代码的,教程让你们替换的应该是return $next($request);这一句上面的那段。