Laravel - как получить текущего пользователя в AppServiceProvider
поэтому я обычно получаю текущего пользователя с помощью Auth::user()
и когда я определяю, действительно ли пользователь вошел в систему Auth::check
. Однако это, похоже, не работает в my AppServiceProvider
. Я использую его для обмена данными во всех представлениях. Я!--4--> и 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'));
}
2 ответов
сеанс 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 );
});
}
обратный вызов будет выполняться только когда представление фактически составляется, поэтому промежуточные программы будут уже выполнены и сеанс будет доступен
на AuthServiceProvider
' s boot()
функция напишите эти строки кода
public function boot()
{
view()->composer('*', function($view)
{
if (Auth::check()) {
$view->with('currentUser', Auth::user());
}else {
$view->with('currentUser', null);
}
});
}
здесь *
означает - во всех ваших взглядах $currentUser
переменная доступна.
затем из view file {{ currentUser }}
даст вам информацию о пользователе, если пользователь аутентифицируется иначе null.