OnActionExecuting中的重定向无法正常工作

时间:2016-09-23 10:40:57

标签: c# asp.net-mvc asp.net-mvc-4

我正在尝试重定向未通过OnactionExecuting()进行身份验证的访问者,以便它覆盖我的整个控制器,但它几乎就像是被完全跳过了。是否可以从OnActionExecuting()中重定向?

  protected override void OnActionExecuting(ActionExecutingContext filterContext)
{

    base.OnActionExecuting(filterContext);
    if (SimpleAuth.isAuth())
    {
        RedirectToAction("Login", "Users");
    }
}

1 个答案:

答案 0 :(得分:4)

您无法在内置过滤器中使用RedirectToActionRedirectToActionController类的成员。这就是为什么你可以在动作方法中调用这个方法的原因,这些方法是继承自Controller类的类的成员。

但是,如果我们在谈论过滤器,那么您必须将filterContext.Result设置为新的RedirectToRouteResult

 filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(
                                new
                                {
                                    controller = "Users",
                                    action = "Login"
                                }));