ASP.NET MVC 3 OnActionExecuting вызывает бесконечный цикл
У меня есть тот переопределенный метод OnActionExecuting (для проверки перед выполнением действия, если пользователь вошел в систему)
public class AuthenticationAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
{
string redirectUrl = string.Format("?returnUrl={0}", filterContext.HttpContext.Request.Url.PathAndQuery);
filterContext.HttpContext.Response.Redirect(FormsAuthentication.LoginUrl + redirectUrl, true);
}
else
base.OnActionExecuting(filterContext);
}
}
Почему - если пользователь не вошел в систему - ответ снова перенаправляется на этот метод. Зачем?
1 ответ
Решение
Вероятно, это связано с тем, что действие контроллера, на которое вы перенаправляете (я думаю, URL-адрес входа), также украшено этим атрибутом. Поэтому, если пользователь не аутентифицирован, он перенаправляется на действие входа в систему, а поскольку он не аутентифицирован, он перенаправляется на действие входа в систему и так далее. Лично я бы порекомендовал вам использовать [Authorize]
атрибут вместо написания такого фильтра действий.