Я обновил с 5.2 до 5.3, а Auth::user()
возвращает null
.Laravel 5.2 -> 5.3 Auth :: user() return null
Маршрут
Route::group(['middleware' => ['auth']], function() {
Route::get('/test', '[email protected]');
}
Контроллер с конструктором вызова Auth::check()
возвращает null
public $user;
public function __construct() {
$this->user = Auth::user();
}
public function showMain() {
return $this->user;
}
контроллера с showMain
вызова Auth::check()
возвращается User
(как и ожидалось).
public function __construct() {
// Nothing
}
public function showMain() {
return Auth::user();
}
Я также рассмотрел разницу между чистой установкой 5.3 и 5.2-> 5.3, обновленной. В 5.3 есть еще 2 дополнительных класса, которые не находятся в обновленной версии.
- Authenticate.php
- Authorize.php
И эти классы называют по Kernel.php
в protected $routeMiddelware
Я также посмотрел в \Auth::user() is null in 5.3.6?, не только это не решить мою конкретную проблему, я также не думаю, что это хорошее решение.
Может кто-нибудь объяснить мне, почему я сталкиваюсь с этой проблемой?
вы не можете получить доступ к сессии или аутентификации пользователя в вашем конструктор контроллера, потому что промежуточное программное обеспечение еще не запущено [docs] (https://laravel.com/docs/5.3/upgrade#5.3-session-in-constructors) –