繁体   English   中英

在ASP.NET中强制自定义HTTP 401未授权页面

[英]Forcing a custom HTTP 401 unauthorized page in ASP.NET

我已经编写了一个Web应用程序,供工作时内部使用(不适用于更广泛的Internet),它使用Windows身份验证 - ASP.NET查询Windows以获取当前的凭据集。 如果在我设置的AD组中找不到用户名,则从受保护页面的Page_PreInit调用的身份验证方法会引发401错误。

我实现了Earlz'CustomErrorsFixer 抛出一个HttpException总是发回HTTP 500错误? 因为我也只有500秒回来了。 现在我的自定义错误页面正常工作,这很棒。

在Visual Studio开发服务器本地开发,我发现如果我没有访问权限,我会直接进入401错误页面。 然而! 当我将站点发布到IIS服务器时,如果用户没有访问权限,则会获得Windows用户名/密码提示 (XP中的丑陋,小的)。 这实际上非常方便,因为它使登录到不同域的人有机会输入正确的凭据。

在此阶段,当密码提示出现时,如果用户点击取消退出 ,他们会转到自定义401页面,告诉他们如何进行请求访问。 但是,如果他们尝试输入用户名和密码(默认为错误的域名,因此是不正确的凭据),则会显示默认的IIS 401页面 ,我非常希望避免这些页面 第三种情况 - 如果他们输入CORRECT凭据,则会询问他们3次,然后显示自定义错误页面。

因此,如果用户“经过身份验证”,则会看到自定义401页面,如果不是,则会看到标准IIS页面。

但是,我发现大多数人在提示输入用户名/密码框时只输入没有域名的用户名/密码 - 这最终会导致错误,因此将其发送到非自定义IIS 401页面 有谁知道我怎么解决这个问题? 这非常烦人,因为人们需要查看自定义401页面才能看到他们需要访问哪个组!

如果它很重要,我们所有使用的浏览器都是XP上的IE8或Windows 7上的IE9。请告诉我是否应该发布任何代码。

IIS7默认拦截401以及一些其他HTTP状态代码。

尝试这个:

<configuration>
  <system.webServer>
    <httpErrors existingResponse="PassThrough" />
  </system.webServer>
</configuration>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM