Истечение срока действия сеанса, управляющее asp.net mvc3 для вызовов ajax

Мой вопрос очень похож на этот, но я не мог понять, как Я храню вещи СУХИМИ. Используя ответ на этот пост, я могу аутентифицировать проверку конкретного вызова 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 домашней страницы.

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

Спасибо


person saarthak    schedule 11.10.2011    source источник
comment
Можете ли вы быть более конкретным с тем, чего вы хотите достичь, пожалуйста? Приведите несколько примеров кода.   -  person    schedule 11.10.2011


Ответы (1)


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

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
    }
}

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

person Community    schedule 11.10.2011