我正在使用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特定方式?
答案 0 :(得分: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}
});
}