У меня есть приложение Asp.Net MVC. Это просто подход, поэтому я не могу предоставить код.

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

enter image description here

На рисунке из Azure показано, чего я хочу достичь (но дальше я хочу начать с отображения предупреждения в первую очередь).

Так есть ли функция или что-то, предоставленное asp.net, чтобы определить, закончился ли сеанс? А во-вторых, как бы я отобразил предупреждение?

-1
Tom el Safadi 29 Май 2017 в 01:28

2 ответа

Лучший ответ

В asp.net нет специальной функции, которая бы уведомляла пользователя о том, что сессия закончена или заканчивается. Но эта функциональность в настоящее время наблюдается на многих сайтах. Сеанс запускается сервером при получении запроса обратной передачи. Когда в течение определенного периода времени нет никаких действий пользователя, сеанс истекает. Вы можете использовать javascript alert, чтобы показать всплывающее окно пользователю относительно времени ожидания сеанса.

Я предложу 2 способа:

  1. Запустите таймер на стороне клиента и оповестите пользователя о его истечении. Например, если время сеанса 5 минут, вы можете уведомить пользователя через 4 минуты, что сеанс истекает через 1 минуту, если никаких действий не производится.
  2. Второй подход заключается в том, чтобы инициировать запрос обратной передачи к контроллеру автоматически или когда пользователь нажимает кнопку ОК на alert (Ваша сессия скоро истечет, и вы выйдете из системы. хотите продлить сессию?)
1
ViVi 29 Май 2017 в 05:34

К сожалению, нет простого ответа на это. Причина в том, что если бы вы пропинговали сервер, чтобы проверить сеанс, это действие фактически продлило бы тайм-аут сеанса, если только вы не настроите службу на отсутствие доступа к сеансу - это означает, что вам нужен еще один механизм отслеживания. Поддельный способ - установить время JavaScript, равное времени ожидания сеанса. Вам нужно будет сбросить этот таймер при любом вызове ajax.

Более сложным решением является использование технологии постоянного соединения, такой как SignalR, которая уведомляет абонента о session_timeout.

2
Hank Williamson 29 Май 2017 в 01:24