Я создаю приложение с несколькими пользовательскими ролями и действиями. Я следовал официальному документу Laravel (https://laravel.com/docs/5.5/middleware#middleware-parameters).
Но в конструкторе моего контроллера (откуда я называю вышеупомянутое промежуточное программное обеспечение) я использую Auth фасад, чтобы получить детали пользователя. Я знаю, как использовать Auth фасад, я реализовал его в нескольких местах внутри моего приложения. Но когда я использую его внутри конструктора, он возвращает ноль (в состоянии входа в систему — я дважды проверил это).
Я реализовал это так, мне нужно вызвать два контроллера (так как только зарегистрированные пользователи могут получить доступ к этой странице)
public function __construct()
{
$role = Auth::user()->role;
$this->middleware('auth');
$this->middleware('checkRole:$role');
}
PS: я пытался инициализировать переменную $ role как защищенную и вне конструктора, но все еще не работающую. Любые предложения будут полезны
Спасибо.
Это потому, что конструкторы создаются до промежуточного программного обеспечения, поэтому он возвращает нуль.
Этот ответ, вероятно, решит ваши проблемы: Не могу вызвать Auth :: user () для конструктора контроллера
Других решений пока нет …