Я строю WebAPP для клиента с помощью ASP.NET MVC в C#.POSTING Ajax форма, используя [Авторизовать] атрибут после того, как пользователь выходит из системы ASP.NET
У меня есть форма Ajax в модальном окне, которое отправляется, когда пользователь нажимает кнопку.
Пользователь должен быть зарегистрирован, чтобы быть на этой конкретной странице и выполнять это конкретное действие - поэтому я использую атрибут [Authorize]
для необходимых действий контроллера.
Скажем, действие контроллера форма вывешивает взоры как этот (псевдо-код, просто пример):
[Authorize]
public ActionResult DoAjaxThings(string field, string anotherfield)
{
// ... do things
if (success)
{
return Json(new { success = true });
}
else
{
return Json(new { success = false, error = "Something went wrong" });
}
}
Как вы можете видеть, что я вернуть объект JSON обратно с success
собственности и error
, если необходимо.
Затем обрабатывается методом обратного вызова на странице, а от него идет показ прядильщиков, единорогов и другой магии.
В случае успеха модальная форма закрыта и отображается сообщение об успешном завершении.
Если ошибка не удалась и исправлена ошибка, ошибка div
заполняется сообщением об ошибке, которое я отправляю обратно. Звучит довольно просто ..
Сценарий
Допустим сеанс пользователя маркер только длится 15 минут - и раздвижными (каждый новый запрос сбрасывает его (не обязательно жизненно важное значение для вопроса)). Они не используют опцию «запомнить меня».
Если они простаивают/сидят на странице более, чем на выделенное время, то токен заканчивается.
Очевидно, что к этому моменту их токен сеанса истек, и им нужно будет снова войти в систему.
Обычное поведение будет происходить при навигации по действиям контроллера [Authorize]
: возврат пользователя на страницу входа в систему с помощью строки запроса ReturnUrl=xyz
.
Представьте Это
Итак, вернемся к Ajax формы модального в.
Пользователь был на странице в течение 15 минут, и их токен истек.
Они нажимают на кнопку, чтобы выполнить [Authorize]
d действие ...
метод действий не выполняется, а WebApp возвращает редирект на страницу входа в систему.
Но то, что возвращается через этот вызов Ajax, является страницей ENTIRE Login.И, видя, что нет success
, функция обратного вызова получает переадресацию, которая выкалывает страницу входа - все в это маленькое крошечноеdiv
.
Вам не нужно, чтобы я говорил вам, что это выглядит грязным отвратительным.
Вопрос
ясно видеть, что WebApp реализует атрибут [Authorize]
и что пользователь выходит из системы.
Я не могу ударить по любым точкам останова внутри Action, потому что [Authorize]
берет и перенаправляет автоматически.
Итак, что я прошу это:
Как я могу обойти/преодолеть/решить этот вопрос с [Authorize]
, которые инициированы первым и блок кода Действие не выполняется?
Ваши добрые предложения, ответы и общее руководство оценены, как всегда.
проверить этот ответ [перенаправляет для входа, если несанкционированного вызова AJAX] (http://stackoverflow.com/questions/5258721/authorize-attribute-and-jquery-ajax-in -asp-net-mvc) – CyberNinja