Экран входа в AJAX результат - Asp.net Mvc - PullRequest
5 голосов
/ 21 марта 2009

Когда вы используете членство в asp.net и у вас есть тег [Authorize] на контроллере / Action, иногда, когда вы возвращаетесь с кофе / прогулки, вы выходите с сайта. Когда вы нажимаете кнопку или ссылку, которая вызывает Ajax-вызов, возвращаемый html - это не то, что вы запрашивали, а экран входа в систему, который затем отображается где-то на странице (если вы используете $ ("placeholder"). Html ( результат) ).

Есть ли способ обнаружить это в jQuery? Так как это законный html, вы не получите ошибку, но это не то, чего вы хотите, чтобы это произошло.

Ответы [ 2 ]

6 голосов
/ 21 марта 2009

Подход времени ожидания сеанса на стороне клиента tvanfosson работает очень хорошо, на самом деле - я был впечатлен несколькими сайтами, на которые я вернулся после ланча и обнаружил, что они автоматически перенаправлены обратно на страницу входа.

Другой подход может быть следующим:

Вы отправляете запрос Ajax в (скажем) / Account / Details, но срок действия вашего cookie-файла для входа истек, поэтому вы не можете его видеть; вместо этого контроллер возвращает / Security / Login.

Если ваш контроллер возвращает вид входа в систему вместо запрашиваемой страницы, рассматривали ли вы вопрос об установке кода ответа на 401 Не авторизовано вместо 200 OK ?

Затем вам нужно будет изменить ваш обратный вызов Ajax для проверки кода состояния ответа Ajax, и если это 401 Не авторизован, вы можете ответить соответствующим образом - перенаправить на страницу входа, показать всплывающее окно входа, или просто сообщение об ошибке «извините, вам нужно войти снова»

6 голосов
/ 21 марта 2009

Одна вещь, которую вы могли бы сделать, это обнаружение тайм-аута сеанса на стороне клиента. Установите таймер, который истекает незадолго до истечения вашего фактического сеанса. Дайте таймеру всплывающее диалоговое окно, указывающее, что сеанс скоро истечет, и дайте пользователю возможность обновить его (отправьте обратно запрос AJAX для обновления таймера сеанса). Иметь другой таймер в диалоговом окне, срок действия которого истекает до истечения времени, оставшегося до фактического сеанса. Если этот таймер срабатывает, тогда сбросьте href страницы в URL выхода и выйдите из системы. Очевидно, что таймеры необходимо будет сбросить по активности пользователя на странице - ajax-запросам и т. Д.

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