ASP.NET MVC 3 OnActionExecuting вызывает бесконечный цикл - PullRequest
2 голосов
/ 13 мая 2011

У меня есть этот переопределенный метод 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 Ответ

3 голосов
/ 13 мая 2011

Это, вероятно, потому, что действие контроллера, на которое вы перенаправляете (URL входа в систему, я думаю), также украшено этим атрибутом. Поэтому, если пользователь не аутентифицирован, он перенаправляется на действие входа в систему, а поскольку он не аутентифицирован, он перенаправляется на действие входа в систему и так далее. Лично я бы рекомендовал использовать атрибут [Authorize] вместо написания такого фильтра действий.

...