2017-01-10 17 views
1

Я пытаюсь получить доступ к аутентифицированному идентификатору пользователя в приложении ServiceerviceProvider, его работая нормально, когда я в приложении, после того, как вы сразу запустили его работу, но когда я выхожу из системы, он дает ошибку, а не перейти на страницу входа вОшибка При попытке получить свойство non object (laravel 5.3)

Попытка получить свойство объекта, не из

Вот мой код Appserviceprovider написано в методе загрузки.

public function boot() 
{ 
    view()->composer('*', function($view){ 
    $view->with('user', Auth::user()); 

    $counter = DB::table('notifications')->where('notifications.userid', Auth::user()->id)->count(); 
    View::share('counter', $counter); 
    }); 

Он дает ошибку в том, где предложение моего вышеуказанного запроса при выходе из системы. его потому, что после выхода из системы его не в состоянии получить аутентификации идентификатор пользователя .. Пожалуйста, помогите, как я могу это исправить или как сделать это наилучшим образом, если какой-либо

+0

Проблема заключается в том, что 'Auth :: user() -> id' при выходе из системы' Auth :: user() 'пуст – Beginner

ответ

0

Вы должны смотреть в эту Laravel protecting routes

Вы можете защитить маршруты поэтому они не доступны, если вы не вошли в систему. Это должно устранить вашу проблему.

Если вы хотите, чтобы этот маршрут был доступен, когда вы не вошли в систему, вы должны сделать запрос if вокруг запроса. Вы можете использовать Auth::check(), чтобы увидеть, если пользователь вошел в систему.

if(Auth::check()) { 
    //Do stuff 
} 
0

Чтобы избежать этого, когда вы выйти из системы, так как Auth::user() пусто просто использовать трехкомпонентную условие

Если Auth::user() затем использовать Auth::user()->id еще, если не использовать null значение вместо

Auth::user() ? Auth::user()->id : null 

изменение этой линии

$counter = DB::table('notifications')->where('user_notifications.user_id', Auth::user() ? Auth::user()->id : null)->count(); 
+0

дорогая его по-прежнему такая же ошибка –

+0

@recoverymen можете вы' var_dump (Auth :: user()); 'см. результат, если вы выходите из системы – Beginner

+0

, каков результат? вы можете показать его – Beginner

0

Я думаю, что ваш коду нужен обновить, как:

public function boot() 
{ 
    if(Auth::user()){ 
     view()->composer('*', function($view){ 
     $view->with('user', Auth::user()); 

     $counter = DB::table('notifications')->where('user_notifications.user_id', Auth::user()->id)->count(); 
     View::share('counter', $counter); 
     }); 
    } 

Надеется, что это работа для Вас!

+0

все еще дает ту же ошибку .. я не могу использовать проверку начала метода, потому что '$ view-> с ('user', Auth :: user());' , дающий мне доступ к auth –