Мое решение было основано на решении, представленном Дэвидом Гленном, спасибо.
public class CustomAuthorization : AuthorizeAttribute
{
public string Url { get; set; }
// redirect to login page with the original url as parameter.
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectResult(Url + "?returnUrl=" + filterContext.HttpContext.Request.Url.PathAndQuery);
}
}
И добавьте Атрибут для ваших контроллеров / действий
[CustomAuthorization(Url="/Area/Login")]
public class HomeController {
//...
}
Лучше используйте filterContext.Resultчем filterContext.HttpContext.Response.Redirect (Url) для перенаправления, поскольку текущий фильтр будет перенаправлен немедленно на страницу входа, в противном случае будет вызвано исходное действие, и только после этого он будет перенаправлен на страницу входа.