为 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 特定方法?
您可以覆盖CustomAuthorize
中的HandleUnauthorizedRequest
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary
{
{"area", ""},
{"controller", "Error"},
{"action", "NotAuthorized"},
{"returnUrl", filterContext.HttpContext.Request.RawUrl}
});
}