2013-03-20 3 views
3

Я хочу реализовать простой для веб-приложения, которое мы создаем. Раньше я достигал этого, используя AsynchronousSessionAuditor из codeplex, который в основном ищет проверку подлинности форм и тайм-аут cookie сеанса постоянным опросом.Каков наилучший способ реализовать простоя для веб-приложения (автоматический выход из системы)

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

JQuery plug от erichynds решает эту проблему событий на стороне клиента, но страдает от другого недостатка, который не может распознать пользователя на другой вкладке.

Есть ли кто-нибудь уже исправил проблему просмотра TABBED с помощью jquery-idle-timeout-plugin? Или есть ли лучший подход к времени приложения для веб-приложений (кстати, это веб-приложение построено с использованием asp.net f/w)

ответ

2

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

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

+1

Да, вы правы. Я должен был, наконец, выбрать AsynchronousSessionAuditor для решения этой проблемы, поскольку события на стороне клиента через вкладки и окна не могли обрабатываться конкретно, не сохраняя данные на сервере (как указано Ryoku) ниже. – Lin

0

Ну, вам придется закодировать его вручную, что не очень сложно. Вы можете использовать OnFocus и ONBLUR функции, чтобы сделать что-то вроде этого:

$(function() { 
    window.isActive = true; 
    $(window).focus(function() { this.isActive = true; }); 
    $(window).blur(function() { this.isActive = false; }); 
    showIsActive(); 
}); 

function showIsActive() 
{ 
    console.log(window.isActive) 
    window.setTimeout("showIsActive()", 2000); 
} 

function doWork() 
{ 
    if (!window.isActive) { /* Check for idle time */} 
} 

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

Try: Run setTimeout only when tab is active или How to tell if browser/tab is active

EDIT -> ДОБАВЛЕНО:

Или я хотел бы попробовать другой подход. Вы можете создать файл cookie с некоторым хешем и сохранить этот хэш в своей базе данных с отметкой времени, которая обновляется всякий раз, когда окно активно (вы можете проверять каждые 5 секунд или что-то еще, это не интенсивный запрос)
Затем выполните еще одну проверку (но в том же запросе), чтобы узнать, сколько времени прошло с момента последней отметки времени и вывести их в случае необходимости.
он не выйдет из системы не по прошествии времени, но при попытке получить доступ к сайту либо путем его открытия, либо путем фокусировки на вкладке/окне.

 Смежные вопросы

  • Нет связанных вопросов^_^