Auth::check() возвращает False в модели Laravel, но возвращает True в контроллере

У меня есть приложение Laravel, в котором я хочу получить Auth::user в своей модели. Однако, когда я делаю Auth::check() в модели, он возвращает false, тогда как в контроллере он возвращает true.

protected static function boot()
{
    parent::boot();

    if (Auth::check()){ //returns false
        // do my stuff
    }
}

person tayyab_fareed    schedule 04.12.2018    source источник


Ответы (1)


Я почти уверен, что функция boot в моделях выполняется до загрузки AuthProvider. В противном случае поставщик аутентификации по умолчанию не сможет использовать модель User.

Из-за этого у вас нет доступа к данным пользователя в функции boot.

person Jerodev    schedule 04.12.2018
comment
Ваш ответ кажется законным, но stackoverflow.com/questions/50564362/ здесь они делают что-то подобное - person tayyab_fareed; 04.12.2018
comment
Да, функция будет работать нормально, если вы используете ее в коде, который вы вызываете вручную при загрузке Laravel. Это просто не будет работать в функции загрузки. - person Jerodev; 04.12.2018
comment
Честно говоря, использование Auth::check() в функции модели также звучит как запах кода. Например, это может даже помешать вам использовать определенные функции в консольных командах. - person Namoshek; 04.12.2018