没有授权的Asp.net MVC访问自定义错误页面

时间:2016-11-22 14:09:12

标签: asp.net asp.net-mvc

在我的Asp.Net MVC项目中,我创建了一个自定义授权属性。如果用户未经过身份验证,我的过滤器工作正常。但是当我在登录页面中并编写了一个不存在的控制器时,我无法重定向到自定义错误页面。

这是我的自定义授权属性。

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    protected virtual CustomPrincipal CurrentUser => HttpContext.Current.User as CustomPrincipal;

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        if (!filterContext.HttpContext.Request.IsAuthenticated) base.OnAuthorization(filterContext);

        if (string.IsNullOrEmpty(Roles)) return;
        if (CurrentUser == null) return;
        if (!CurrentUser.IsInRole(Roles)) filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Error", action = "AccessDenied" }));
    }
}

由于我的默认路由,我的应用程序正在重定向到帐户/索引操作

    [AllowAnonymous]
    public ActionResult Index(string returnUrl) { return View(); }

    [AllowAnonymous]
    public ActionResult Index2(string systemUserId, string returnUrl)
    {

    }

    [HttpPost, ValidateAntiForgeryToken, AllowAnonymous]
    public ActionResult Index(AccountViewModel accountModel,string returnUrl)
    {

    } 

如何跳过自定义错误页面的过滤器?

1 个答案:

答案 0 :(得分:0)

我已将[AllowAnonymous]属性添加到我的ErrorController并解决了问题。