【问题标题】:Trying to get property of non-object laravel 5.3 (Auth class)试图获取非对象 laravel 5.3 的属性(Auth 类)
【发布时间】: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


【解决方案1】:

我解决了
在 kernel.php 上添加这个 middelware

\Illuminate\Session\Middleware\StartSession::class,

【讨论】:

  • 我已经为此苦苦挣扎了好几个小时,但我不明白他们为什么不放这么简单的东西,包括文档。谢谢老兄!
猜你喜欢
  • 2020-08-28
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多