Окончание сеанса управления asp.net mvc3 для вызовов ajax - PullRequest
1 голос
/ 11 октября 2011

Мой вопрос очень похож на это , но я не мог понять, как я могу держать вещи СУХОЙ.Используя ответ из этого поста, я могу проверить подлинность проверки конкретного вызова AJAX, но в моем приложении есть несколько вызовов AJAX, и если я использую этот подход, мне придется проверять каждый обратный вызов успеха вызова AJAX.Что не совсем круто.

Можете ли вы предложить хороший способ позаботиться об этом и сохранить вещи сухими?

Javascript

function GetStuff(x) {
            if (!x.value) return;
            $.post('/website/GetStuff', { val: x.value, text: x.text },
            function (data) {
                $("#ddlStuff").empty().append($("<option>").attr("value", "0").text("Choose...")).removeAttr("disabled");
                $.each(data, function (i, d) { $("<option>").attr("value", d.k).text(d.v).appendTo($("#ddNewStuff")); });
            });
        }

C #

 [HttpPost]
        public JsonResult GetSutff(long val, string text)
        {
            List<string> data = new MyClass().GetDataFromDB(val, text);
            return Json(data);
        }

Поскольку на контроллере, в котором определено действие GetStuff, есть тег Authorize поверх него.Поэтому все звонки, сделанные здесь, должны быть аутентифицированы.Теперь, если сеанс истекает, тогда это действие GetStuff возвращает html домашней страницы (домашняя страница с возвращаемым URL - довольно стандартный материал), и это вызывает проблему.Подобно этому, есть и другие страницы просмотра, чьи действия поста ajax аутентифицируются, и они также терпят неудачу на стороне клиента, когда сеанс завершается неудачно и возвращается html домашней страницы.

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

Спасибо

1 Ответ

0 голосов
/ 11 октября 2011

Если вы удалите аннотацию аутентификации из вашего контроллера, вы можете получить следующее:

public JsonResult GetSutff(long val, string text) 
{ 
    if (Request.IsAuthenticated)
    { 
        List<string> data = new MyClass().GetDataFromDB(val, text); 
        return Json(data); 
    }else
    {
      // Return empty JSON
    }
}

Пожалуйста, дайте мне знать, если вы можете найти другое решение.Также я не проверял, но должен быть способ переопределить Аутентификацию для каждого метода действия, а не удалять ее из всего контроллера.

...