gpt4 book ai didi

asp.net - MVC Windows 身份验证提示输入 Windows 凭据并忽略自定义错误配置

转载 作者:行者123 更新时间:2023-12-01 12:45:13 26 4
gpt4 key购买 nike

在使用 Windows 身份验证和自定义角色提供程序的 IIS7.5 服务器(集成管道)上运行 MVC4 的 Web 应用程序中,如果有人试图访问某些内容,我想在 401 未授权错误上显示自定义错误页面他们没有权限。

当我在 Visual Studio 中进行本地调试时,错误页面正确显示,并且我漂亮的自定义“未授权”页面按预期显示。

部署到服务器 - 我得到了 windows 提示。

enter image description here

以下是(我认为)web.config 的相关部分:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
<roleManager enabled="true" defaultProvider="MyCustomRoleProvider">
<providers>
<clear />
<add name="FimOpsAccessControlRoleProvider" type="Namespace.MyCustomRoleProvider" />
</providers>
</roleManager>
<customErrors mode="On" defaultRedirect="~/Error">
<error redirect="~/Error/Error401" statusCode="401" />
</customErrors>
</system.web>
<system.webServer>
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="401" />
<error statusCode="401" path="/error/error401" responseMode="ExecuteURL" />
</httpErrors>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
</configuration>

在生产服务器上,我能够很好地浏览到/error/error401 - 我还尝试用静态 html 文件替换它并指向它,结果相同。

我已经尝试过静态错误页面,在 global.asax Application_OnError 中做一些事情,我在 web.config 中可以想到的每一个可以想到的配置组合 - 但没有运气。我在 SO 上找到了至少 10 个其他帖子来处理这个问题,但没有一个解决方案对我有用 - 可能是由于版本差异,我不知道。

为什么会发生这种情况 - 我该如何解决?

最佳答案

我认为您无法覆盖浏览器的 Windows 身份验证行为。此身份验证由 Web 服务器进行,​​远远早于您的应用程序代码。所以恕我直言,放置自定义错误页面不会有太大帮助。如果你想更好地控制这些对话框的用户界面,你可以考虑使用混合模式:Forms Authentication with an Active Directory Membership provider对于用户。现在,您可以完全控制登录屏幕以及出现 401 时显示的内容。

关于asp.net - MVC Windows 身份验证提示输入 Windows 凭据并忽略自定义错误配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20802999/

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