ASP.NET MVC 2 AJAX Вызывает, когда срок действия токена входа истек - PullRequest
0 голосов
/ 22 июля 2010

Когда срок действия токена пользователя истек (т. Е. Они вышли из системы) на странице с содержимым, поддерживающим AJAX, при выборе ссылки AJAX на странице она будет успешно завершена.Однако, это не так.Содержимое, которое было возвращено на страницу, является перенаправлением входа.Есть ли способ перенаправить вызов AJAX на страницу входа в систему, если пользователь вышел из системы?Из того, что я вижу, очевидным способом было бы добавить к контроллеру код, который передавал бы ошибку вызывающей стороне AJAX, чтобы он обрабатывал состояние пользователей, однако, поскольку это аутентификация форм, аутентификация происходит до вызова контроллера.

Есть мысли о том, как справиться с этим?Заранее спасибо!

1 Ответ

0 голосов
/ 26 ноября 2012

вы можете настроить атрибут [Authorize] следующим образом

public class CustomAuthorize : AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        //you can change to any controller or html page.
        //filterContext.Result = new RedirectResult("/Account/Login");
        if (filterContext.HttpContext.Request.IsAjaxRequest())
        {
            string destinationUrl = UrlHelper.GenerateContentUrl(FormsAuthentication.LoginUrl, filterContext.HttpContext);
            filterContext.Result = new JavaScriptResult()
            {
                Script = "window.location = '" + destinationUrl + "';"
            };
        }
        else
        {
            base.HandleUnauthorizedRequest(filterContext);
        }
    }
}

вы можете использовать этот атрибут так же, как вы используете атрибут [Authorize] на контроллере или перкулярном действии.

[CustomAuthorize]
public class UserController : Controller
{
   // your actions here
}

или

public class UserController : Controller
{
   [CustomAuthorize]
   Public ActionResult Indes()
   {   
        // your code here
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...