Laravel – Как получить текущего пользователя в AppServiceProvider

Поэтому я обычно получаю текущего пользователя с помощью Auth::user() и когда я определяю, действительно ли пользователь зарегистрирован в Auth::check . Однако, похоже, это не работает в моем AppServiceProvider . Я использую его для обмена данными во всех представлениях. Я var_dump как Auth::user() и Auth::check() во время входа в систему, и я получаю NULL и false .

Как я могу получить текущего пользователя внутри моего AppServiceProvider ? Если это невозможно, каков способ получения данных, которые уникальны для каждого пользователя (данные, которые различаются в зависимости от user_id ) во всех представлениях. Вот мой код для разъяснения.

 if (Auth::check()) { $cart = Cart::where('user_id', Auth::user()->id); if ($cart) { view()->share('cart', $cart); } } else { view()->share('cartItems', Session::get('items')); } 

Сеанс Laravel инициализируется в промежуточном программном обеспечении, поэтому вы не можете получить доступ к сеансу от поставщика услуг, поскольку они выполняются перед промежуточным программным обеспечением в жизненном цикле запроса

Вы должны использовать промежуточное программное обеспечение для обмена вашими вариантами с сеанса

Если по какой-либо другой причине вы хотите сделать это у поставщика услуг, вы можете использовать композитор представления с обратным вызовом, например:

 public function boot() { //compose all the views.... view()->composer('*', function ($view) { $cart = Cart::where('user_id', Auth::user()->id); //...with this variable $view->with('cart', $cart ); }); } 

Обратный вызов будет выполнен только тогда, когда представление фактически составлено, поэтому middlewares будут уже выполнены и сеанс будет доступен

В AuthServiceProvider boot() AuthServiceProvider пишите эти строки кода

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

Здесь * означает – во всех ваших представлениях $currentUser переменная $currentUser .

Затем из файла вида {{ currentUser }} вы получите информацию о пользователе, если пользователь аутентифицирован, иначе null.