Каков наилучший способ вернуть сообщение «Неаутентифицировано» из действия контроллера в объект запроса Ajax? - PullRequest
1 голос
/ 14 января 2010

У меня есть приложение C # MVC, которое сильно зависит от Ajax . Я использую Ext JavaScript-фреймворк, но здесь это не важно.

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

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

Для бонусных баллов было бы проще, если бы мне не приходилось реализовывать это решение в 300 или около того Действиях, которые у меня есть. Атрибут класса или метода был бы хорошим решением и соответствовал бы тому, что я сейчас делаю для не Gj-запросов Ajax.

1 Ответ

0 голосов
/ 14 января 2010

Это решение, которое я придумала

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
sealed public class RedirectIfUserNotLoggedOnAttribute : ActionFilterAttribute
{
public override void OnActionExecuting (ActionExecutingContext filterContext)
  {
    if (!IsUserLoggedOn)
        {
          filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
                                                                                      {
                                                                                        controller = "User",
                                                                                        action = "WarnLogOutAsJson",
                                                                                      }));
        }
}
}

Указанное вами действие контроллера должно возвращать JsonResult.

Конечно, вам нужно создать другой атрибут для запросов GET или любого другого запроса, если ответ не был получен в форме Json.

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