在ASP.NET中强制定制HTTP 401未经授权的页面
我已经编写了一个Web应用程序供内部使用(不适用于更广泛的互联网)使用Windows身份验证 - ASP.NET正在询问Windows当前的凭据集。 如果在我设置的AD组中找不到用户名,则从受保护页面的Page_PreInit调用的身份验证方法将引发401错误。
我从抛出一个HttpException实现了Earlz的CustomErrorsFixer总是发回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>
链接地址: http://www.djcxy.com/p/12453.html