gpt4 book ai didi

asp.net-mvc - 如何为 Http 401 结果显示自定义错误页面?

转载 作者:行者123 更新时间:2023-12-03 14:09:16 26 4
gpt4 key购买 nike

我有一个带有 Authorize 属性的 Controller ,如下所示:

[Authorize(Roles = "Viewer")]
public class HomeController : Controller
{
//...
}

我的 web.config 有 customErrors 设置如下:
<customErrors mode="On">
<error statusCode="401" redirect="notauthorized.html"/>
</customErrors>

当我尝试使用非授权角色在 Home Controller 上调用操作时,我只会得到一个空白页面。我没有被重定向到自定义页面。
有任何想法吗?

最佳答案

我很欣赏这个问题有点旧,但这可能对某人有所帮助。

对于 401,您可能会看到标准的 401 Unauthorized 页面,即使您已将 401 添加到 web.config 的 customerrors 部分。我读到,当使用 IIS 和 Windows 身份验证时,检查发生在 ASP.NET 甚至看到请求之前,因此您会在 Cassini 和 IIS 上看到它自己的 401 空白页。

对于我的项目,我编辑了 Global.asax 文件以重定向到我为 401 错误创建的路由,将用户发送到“未经授权查看” View 。

在 Global.asax 中:

    void Application_EndRequest(object sender, System.EventArgs e)
{
// If the user is not authorised to see this page or access this function, send them to the error page.
if (Response.StatusCode == 401)
{
Response.ClearContent();
Response.RedirectToRoute("ErrorHandler", (RouteTable.Routes["ErrorHandler"] as Route).Defaults);
}
}

并在 Route.config 中:
        routes.MapRoute(
"ErrorHandler",
"Error/{action}/{errMsg}",
new { controller = "Error", action = "Unauthorised", errMsg = UrlParameter.Optional }
);

并在 Controller 中:
    public ViewResult Unauthorised()
{
//Response.StatusCode = 401; // Do not set this or else you get a redirect loop
return View();
}

关于asp.net-mvc - 如何为 Http 401 结果显示自定义错误页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1422305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com