Как я использовал бы Ajax, чтобы определить, истекла ли сессия пользователя и затем возвращает их странице входа в систему?

На основе моего опыта, и на основе того, что я считал через Интернет, ответ является "Нет", это не гарантируется. Это зависит от скорости ЦП, операционной системы, разновидности Linux, и т.д.

5
задан djdd87 28 October 2009 в 15:52
поделиться

1 ответ

В большинстве случаев это может быть обработано на стороне сервера.

Всякий раз, когда есть активность пользователя на стороне сервера - загрузка страницы, вызов ajax, что угодно, установите переменную сеанса

Session["last_activty"]=DateTime.Now;

В вашем AJAX вызовы и загрузка страницы (можно сделать это на главной странице / вложенной главной странице для страниц, требующих аутентификации), проверьте (псевдокод)

if (DateTime.Now-DateTime.Parse(Session["last_activity"]) > 10 minutes)
  Session["logged_in"]=false;

Если загрузка страницы или метод webmethod / webservice определяют на основе вышеизложенного, что у пользователя истекло время ожидания , либо

a) перенаправить на страницу входа (на стороне сервера), либо

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

ПРИМЕЧАНИЕ : остерегайтесь использования реальных переменных сеанса, поскольку они, как правило, не работают / вообще работают в кластерных серверных средах. Лучшее место для таких вещей - ваша база данных.

table Users
.ID
.last_activity datetime
.logged_in - calculated column which returns if GetDate()-LastActivity > 10 minutes.
4
ответ дан 15 December 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: