Я реализовал принятый ответ от пользователя user434917 и, несмотря на то, что меня перенаправили правильно, я также получил сообщение об ошибке «Сервер не может установить статус после отправки заголовков HTTP». в журнале сервера. После поиска я нашел этот пост (ответ Маттиаса Якобссона), который решил проблему. Я объединил ответы, чтобы получить это решение.
Создание пользовательского фильтра авторизации:
using System.Web.Mvc;
using System.Web.Routing;
namespace SomeNamespace.CustomFilters
{
public class CustomAuthorization : AuthorizeAttribute
{
public string ActionValue { get; set; }
public string AreaValue { get; set; }
public string ControllerValue { get; set; }
public override void OnAuthorization(AuthorizationContext context)
{
base.OnAuthorization(context);
if (context.HttpContext.User.Identity.IsAuthenticated == false)
{
var routeValues = new RouteValueDictionary();
routeValues["area"] = AreaValue;
routeValues["controller"] = ControllerValue;
routeValues["action"] = ActionValue;
context.Result = new System.Web.Mvc.RedirectToRouteResult(routeValues);
}
}
}
}
Затем на вашем контроллере используйте атрибут customer.
[CustomAuthorization(ActionValue = "actionName", AreaValue = "areaName", ControllerValue = "controllerName")]
public class SomeControllerController : Controller
{
//DO WHATEVER
}