1

我正在使用 Windows 身份验证。身份验证工作正常(用户加载了它的角色)。

当授权失败(使用Authorize)属性时,我想提供一个自定义错误页面。似乎该HandleError属性仅被引发的异常调用,而不是任何错误状态代码(>= 300)。

自定义错误部分:

<customErrors mode="On" defaultRedirect="~/Error/">
  <error statusCode="404" redirect="~/Error/NotFound/" />
  <error statusCode="401" redirect="~/Error/NotAuthorized/" />
</customErrors>

我得到了一个ErrorController返回视图。但它永远不会被调用。

我是否必须开始在自定义Authorize属性中引发异常才能处理 401,还是有更好的 MVC3 特定方式?

4

1 回答 1

2

你可以覆盖HandleUnauthorizedRequest你的CustomAuthorize

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary
                                         {
                                             {"area", ""},
                                             {"controller", "Error"},
                                             {"action", "NotAuthorized"},
                                             {"returnUrl", filterContext.HttpContext.Request.RawUrl}
                                         });
}
于 2012-06-12T11:46:02.390 回答