Auth:user() показывает null в Laravel 7, в частности, для контроллера UserController
Я поискал в Интернете, и никто не нашел решения по устранению проблемы. У меня проблема в UserController, а в других контроллерах он работает нормально. Посмотрим маршрут
Route::group(['roles' => ['Super Admin', 'Admin']], function () {
Route::resource('user','UserController')->middleware(['auth','roles']);
});
и UserController
class UserController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
print_r(Auth::user());
exit();
}
3 ответа
Промежуточное ПО, включая "auth", не выполняется при создании экземпляра контроллера. Поэтому Auth::user() всегда возвращает null, если вы вызываете его внутри конструктора контроллера. Используйте Auth::user() только внутри других методов контроллера.
Вы не можете получить доступ к сеансу или аутентифицированному пользователю в конструкторе вашего контроллера, поскольку промежуточное программное обеспечение все еще начинает работать.
Приведенный ниже код наверняка поможет выполнить ваше требование.
class UserController extends Controller
{
public function __construct()
{
$this->user_detail;
$this->middleware(function ($request, $next) {
$this->user_detail = Auth::user();
return $next($request);
});
}
}
Для более подробной информации вы можете проверить официальный документ laravel: https://laravel.com/docs/5.3/upgrade#5.3-session-in-constructors .
2 вещи, которые нужно проверить,
1: Вы вошли в систему? Если нет, возможно, поэтому текущий пользователь нулевой.