Laravel: Как узнать, вошел ли пользователь в Base Controller? - PullRequest
0 голосов
/ 05 апреля 2020

Я хочу иметь возможность изменять поле с именем "last_accessed" в таблице пользователей для каждого запроса, который делает пользователь.

У меня есть контроллер под названием «ContentController», который расширяет «Контроллер». Поэтому я решил добавить код в конструктор «Controller»:

public function __construct()
{
  $user = \Auth::user();
  if (Auth::check()) {
    print 'Good';
  }
  else print "Bad";
}

Что бы я ни делал, я не могу видеть, что у меня есть права доступа.

Может кто-то пожалуйста, скажите мне:

  1. Почему AUTH не работает в базовом контроллере?
  2. Как я могу обновить поле last_accessed при каждом просмотре, если моя идея контроллера не возможна?

1 Ответ

1 голос
/ 06 апреля 2020

Потому что это не работает в __construct(). Есть обходной путь. Это работает, но я не уверен, что некоторые другие пользователи Laravel примут мой ответ. Что вы должны сделать, это создать промежуточное программное обеспечение и работать оттуда. Вы можете использовать анонимную функцию, которая в этом случае имитирует промежуточное ПО:

public function __construct(Request $request)
{
    $this->middleware(function ($request, $next) {
        $user = $request->user();
        if ($user) {
            print 'Good';
        }
        else print "Bad";

        return $next($request);
    });
} 

Если ни один пользователь не вошел в систему, $user будет null.

...