【发布时间】:2016-12-07 06:48:57
【问题描述】:
我使用 laravel 5.3 包。我在config/app.php 上添加了我的包服务提供商,它可以正常工作。但是当我在包控制器上使用 auth 时,显示错误
我正在登录并且在其他控制器上正常工作。在 laravel 5.2 上正常工作。但在 5.3 上显示错误
我的控制器:
public function index()
{
return Auth::user()->name;
}
错误:
Trying to get property of non-object
in TestController.php line 115
at HandleExceptions->handleError('8', 'Trying to get property of non-object', 'C:\wamp64php\www\test\modules\Test\Controller\TestController.php', '115', array()) in TestController.php line 115
at TestController->index()
at call_user_func_array(array(object(TestController), 'index'), array()) in Controller.php line 55
at Controller->callAction('index', array()) in ControllerDispatcher.php line 44
at ControllerDispatcher->dispatch(object(Route), object(TestController), 'index') in Route.php line 190
at Route->runController() in Route.php line 144
at Route->run(object(Request)) in Router.php line 642
at Router->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104
at Pipeline->then(object(Closure)) in Router.php line 644
at Router->runRouteWithinStack(object(Route), object(Request)) in Router.php line 618
at Router->dispatchToRoute(object(Request)) in Router.php line 596
at Router->dispatch(object(Request)) in Kernel.php line 268
at Kernel->Illuminate\Foundation\Http\{closure}(object(Request)) in Pipeline.php line 53
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in CheckForMaintenanceMode.php line 46
at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 137
at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in Pipeline.php line 33
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in Pipeline.php line 104
at Pipeline->then(object(Closure)) in Kernel.php line 150
at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 117
at Kernel->handle(object(Request)) in index.php line 54
【问题讨论】:
-
Auth::user()->name只有在你登录的情况下才能访问,你必须先检查你是否登录,然后再使用什么代码。 -
用户登录了吗?
Auth::user()此时应该为空 -
首先,确保您的包有
auth中间件,其次...Auth::user()是 null 这就是您遇到此错误的原因 -
在您的控制器方法中尝试
dd(auth()->user());之前的return Auth::user()->name;并查看它的输出。如果没有登录用户,它将转储null,否则它将转储当前登录的用户(模型实例)。 -
@prateekkathal 谢谢。
标签: php laravel authentication laravel-5 laravel-5.3