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

  protected override void OnActionExecuting(ActionExecutingContext filterContext)
{

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

最佳答案

您不能在过滤器中使用RedirectToActionRedirectToActionController类的成员。因此,您可以在动作方法中调用此方法,这些动作方法是从Controller类继承的类的成员。

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

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

关于c# - 在OnActionExecuting中重定向不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39658778/

10-10 12:51