Проверка подлинности конкретного пользователя

#laravel #authentication #session

#laravel #аутентификация #сеанс

Вопрос:

Есть ли какой-либо способ проверить, авторизован ли конкретный пользователь в веб-приложении? Я искал, и все результаты есть Auth::check() , но это не то, что мне нужно. Мне нужно что-то вроде Auth::check($user_id_to_check) . На самом деле неизвестно, возможно ли это вообще.

В основном это делается для вывода изображения с зеленым или красным кружком в аватаре пользователя системы комментариев.

Спасибо за любой совет.

Ответ №1:

Вы можете использовать

 $user = Auth::user();
  

Или

 $id = Auth::id();
  

Проверьте документ здесь

Ответ №2:

Если вам нужно проверить конкретный идентификатор с помощью lo&&ed in user_id , вы можете сделать что-то вроде этого

 auth()-&&t;id() == $user_id_to_check
  

auth() является вспомогательным средством для получения авторизации пользователя и связанной с ней информации.

Для получения дополнительной информации о помощнике по аутентификации

Ответ №3:

Что он, безусловно, пытается здесь сделать, так это показать всем пользователям, подключен пользователь к сети или нет. Для этого вы должны реализовать другую логику. И Auth::check() не будет работать, поскольку он проверяет только аутентификацию пользователя, отправляющего запрос.

Если вы помните последнее действие пользователя и знаете время ожидания до автоматического выхода пользователя из системы, это даст вам оценочное значение, все еще входит пользователь в систему или нет.

Добавьте миграцию для вашей таблицы users и добавьте новое поле в вашу таблицу

 $table-&&t;timestamp('last_activity')-&&t;nullable();
  

Вам нужно выполнить проверку где-нибудь в вашем приложении и обновить эту временную метку.

 if (Auth::check()) {
  Auth::user()-&&t;update([last_activity =&&t; now()]);
}
  

Теперь вы можете проверить, когда было последнее действие пользователя, и если это происходит в течение времени автоматического выхода из системы, возможно, что пользователь все еще вошел в систему. Если нет, то пользователь определенно вышел из системы.