授权页面时的MVC 4重定向错误页面

时间:2014-06-06 13:36:07

标签: asp.net-mvc asp.net-mvc-4 razor

我已经实现了CustomRoleProvider,它似乎工作正常。但是,当授权失败时,我会看到一个弹出窗口,上面写着" Windows Security"要求输入用户名和密码。我想要做的是授权失败时,将用户重定向到错误页面。这是代码的片段。

当用户角色不是管理员时,它会显示一个弹出窗口。

[CustomAuthorize]
[Authorize(Roles="Admin")]
public ActionResult ManageTickets(ticketViewModel viewModel)
{
return View;
}

我还尝试自定义HandleUnauthorizedRequest方法,但它不起作用。在调试模式下,这段代码甚至无法执行,我只是弹出窗口。

 public class CustomAuthorize : AuthorizeAttribute
    {
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
            {
                base.HandleUnauthorizedRequest(filterContext);
            }
            else
            {
                filterContext.Result = new RedirectToRouteResult(new
                System.Web.Routing.RouteValueDictionary(new { controller = "ErrorController", area = "Core", action = "Error" }));
            }
        }

    }
}

使用Windows身份验证模式 -

<authentication mode="Windows">

提前感谢任何建议。

1 个答案:

答案 0 :(得分:1)

可能是windows auth返回状态码401. 401表示:

  

如果请求已包含授权凭据,则401响应表示已拒绝授权   那些凭据。

确保将此代码添加到web.config并查看发生的情况:

<customErrors defaultRedirect="Your Default Url" mode="RemoteOnly">
  <error statusCode="401" redirect="~/core/error/error" />
  <error statusCode="403" redirect="~/core/error/error" />
</customErrors>