为 401(授权失败)提供自定义错误页面

本文关键字:自定义 错误 授权 失败 | 更新日期: 2023-09-27 18:37:04

我正在使用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 特定方法?

为 401(授权失败)提供自定义错误页面

您可以覆盖CustomAuthorize中的HandleUnauthorizedRequest

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary
                                         {
                                             {"area", ""},
                                             {"controller", "Error"},
                                             {"action", "NotAuthorized"},
                                             {"returnUrl", filterContext.HttpContext.Request.RawUrl}
                                         });
}