Проверьте, зарегистрирован ли другой пользователь для обмена сообщениями

#c# #asp.net

#c# #asp.net

Вопрос:

Возможно ли узнать, зарегистрирован ли другой пользователь на веб-сайте с помощью ASP.NET Формирует аутентификацию?

  • Пользователь A отправляет пользователю B сообщение.
  • если пользователь B зарегистрирован на веб-сайте, должно появиться всплывающее окно.
  • если нет, он перейдет на обычную страницу уведомлений.

Как я могу реализовать этот сценарий?

Ответ №1:

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

Комментарии:

1. Спасибо за ответ, на данный момент я не использую сеансы на своем веб-сайте, когда пользователь входит в систему, я должен просто поместить их идентификатор пользователя в таблицу зарегистрированных пользователей, имеет ли это смысл?

2. Ну, да и нет, если вы не используете сеансы, как вы уверены, что пользователь на странице авторизован? Что, если у них общие IP-адреса? вы наверняка что-то делаете с временными данными, кроме того, как вы проверяете, выходят ли они из системы?

3. Привет, я использую formsauthentication и cookies, чтобы убедиться, что пользователь вошел в систему, пока это, кажется, работает отлично. При выходе из системы я использую FormsAuthentication. Метод SignOut().

Ответ №2:

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

Я сам не использовал Formsauthentication, поэтому не могу быть точным.

Ответ №3:

Я делаю это через формы login и global.asax. Если кто-то успешно вошел в систему, я добавляю его / ее имя пользователя и идентификатор сеанса в словаре в значении приложения, которое доступно глобально. Если я получаю Session_end в global.asax, я удаляю эту запись.