Как я могу убедиться, что окно активно используется, и если нет, предупредить конечного пользователя о том, что он собирается выйти из системы? - PullRequest
0 голосов
/ 20 сентября 2008

Работа над новой серверной системой для моей компании, и один из их запросов - заблокировать окно и отправить пользователя на экран входа в систему, если он долгое время не используется.

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

Есть предложения?

Ответы [ 4 ]

0 голосов
/ 21 сентября 2008

Во-первых, для того, чтобы это было эффективным, вы должны убедиться, что пользователи вышли из системы на сервере в конце этого простоя. В противном случае, ничего, что вы делаете на стороне клиента, не эффективно. Если вы отправите их на страницу входа, они могут просто нажать кнопку «Назад».

Во-вторых, общепринятый способ сделать это - использовать тег meta meta. Добавление этого на страницу:

<meta http-equiv="refresh" content="900;url=http://example.com/login"/>

отправит их на страницу входа через 15 минут (900 секунд). Это отправит их туда, даже если они что-то делают на странице. Он не обнаруживает активность. Он просто знает, как долго страница была в браузере. Обычно этого достаточно, потому что людям не требуется 15 минут, чтобы заполнить страницу (думаю, stackoverflow.com является заметным исключением).

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

<input type="text" onClick="doSomething;">

Доступ к объектной модели напрямую с помощью

Mozilla way:   element.addEventListener('click' ...)
Microsoft way: element.attachEvent('onclick' ...) 

и затем убедитесь, что вы передаете события после их получения, чтобы существующий код все еще делал то, что (проверка?) Он должен делать.

http://www.quirksmode.org/js/introevents.html неплохо написал, как это сделать.

-
BMB

0 голосов
/ 20 сентября 2008

Если вы можете разместить код на странице, тогда есть две вещи:

  • Javascript ищет движения мыши, клавиатуры и прокрутки.
  • Поместите мета-тег обновления в html - если они находятся на этой странице более X минут, он автоматически перенаправит на страницу входа.

Если вы можете разместить код только на сервере:

  • Сохранять сеанс (cookie или другой), который отслеживает, как долго между изменениями страницы. Если страница запрашивается дольше, чем X минут с момента последнего запроса, не обслуживайте запрашиваемую страницу, а обслуживайте страницу входа.

Вы можете использовать метаобновление и технику сервера вместе. Обновленная страница перейдет к «истекает срок вашей сессии, нажмите здесь, чтобы вернуться и продолжить работу в течение 30 секунд».

Кнопка, которую они нажимают, сбрасывает сеанс вашего сервера и выполняет функцию возврата страницы, поэтому все данные, которые они имели (в большинстве браузеров), все еще будут там. Требуется JavaScript на странице обновления, но не на исходной странице - просто мета-обновление. Хотя лучше всего отслеживать активность Javascript.

-Adam

0 голосов
/ 20 сентября 2008

В событии загрузки страницы вы можете использовать setTimeout для запуска функции, предупреждающей пользователя о том, что он выйдет из системы, если не обновит страницу.

С 5-минутным тайм-аутом сеанса вы можете делать предупреждения через 4 минуты:

setTimeout(timeoutWarning, 240000);

function timeoutWarning() {
  if(confirm('You have been idle for a while.  Would you like to remain logged in?'))
    window.location.refresh();
}
0 голосов
/ 20 сентября 2008

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

Другая проблема, с которой вы столкнетесь, заключается в том, что некоторые пользователи отключают JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...