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: Вы вошли в систему? Если нет, возможно, поэтому текущий пользователь нулевой.

2: Auth:: user () возвращает null

Другие вопросы по тегам