Возможно ли вернуть URL обратно из javascript / jquery? - PullRequest
3 голосов
/ 10 ноября 2009

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

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

Теперь, поскольку это ajax-запрос, похоже, он отправляет всю страницу обратно в формате html. Таким образом, пользователь никогда не получает перенаправление, так как я только что получил всю страницу в виде html.

Однако firebug говорит об этом в консоли:

http://localhost:3668/Account/signIn?ReturnUrl="return "(этого нет в фактической строке URL-адреса в веб-браузере, поэтому я не могу подняться туда и получить его. Кажется, я вижу это только через firebug.)

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

Так как из моих тестов код ошибки не отправляется обратно (отправляется 200 OK). Вместо этого я просто получаю ошибку синтаксического анализа (следовательно, и вызывается errorCallback), но я не могу предположить, что каждый раз, когда я получаю ошибку синтаксического анализа, это означает, что время ожидания пользователя истекло.

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

Ответы [ 4 ]

2 голосов
/ 10 ноября 2009

Вы, вероятно, хотите сделать одну из двух вещей:

  • Напишите код своего сервера таким образом, чтобы запросы ajax возвращали ошибку ajax по истечении сеанса. Таким образом, JavaScript будет ожидать код возврата, который указывает время ожидания сеанса, и вы можете сообщить пользователю, что сеанс истек.
  • Если элегантное решение не предлагается из-за того, как ваш фреймворк обрабатывает эти вещи, просто поместите кусок HTML-комментария на страницу входа в систему, например, Uth7mee3 или что-то еще; затем проверьте наличие этой строки в вашем коде ajax.

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

1 голос
/ 10 ноября 2009

Как насчет наличия скрипта на странице входа

if(document.location.href != "/Account/Login")
{
document.location.href = "/Account/Login"
}

Это сработает, если вы попытаетесь отобразить партиалы в ajax-запросе. (Нет, если вы ожидаете, что JSON)

0 голосов
/ 10 ноября 2009

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

Более подробную информацию о точной реализации, включая код, можно найти в моем блоге: http://farm -fresh-code.blogspot.com .

0 голосов
/ 10 ноября 2009

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

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