代码之家  ›  专栏  ›  技术社区  ›  jcolebrand

每个应用集成的Windows身份验证如果用户取消请求,我可以将它们重定向到另一个页面吗?

  •  0
  • jcolebrand  · 技术社区  · 14 年前

    编辑 ~更新了标题和问题正文:这是编辑。

    我希望在IIS6/7上的每个应用程序都有这样的行为。在我们迁移到iis7之前,我问过这个问题,所以任何答案都可以在两者之间进行更改(从那时起我已经学习了一些关于iis7的知识;]),但我正在寻找一个有效的答案。

    我需要根据用户取消401认证请求(意味着401.1错误代码)重定向每个应用程序而不是每个服务器。希望这有帮助。


    在iis6上,使用NTLM身份验证(即集成的Windows身份验证)如果用户取消身份验证请求,我如何将其重定向到其他页面?我不能只在web.config中获取401(尝试过)或401.1(不是in t)。

    如果问题是401状态,我就不能重定向,因为我是故意要求401得到响应的,是吗?那么,当他们取消浏览器挑战时,我该如何捕捉?

    为了确认我是否清楚:如果我打开火狐并导航到一个IWA页面,它会显示一个对话框(假设我在about:config中没有配置该对话框),我输入要使用的Windows凭据。我想防止他们把那个箱子塞住。

    1 回复  |  直到 10 年前
        1
  •  1
  •   ChrisLively    14 年前

    我知道这很旧,但有些响应类型没有传递给.NET进行处理。相反,它们必须在IIS级别处理。如果需要基于响应的其他页面,则需要转到IIS管理器并找到控制错误页面的部分(根据您使用的IIS版本,这是不同的)。

    然后添加要捕获的状态代码,并为其提供希望浏览器指向的页面。

    我知道你提到过IIS6,但我没有访问其中一个服务器的权限。对于IIS 7,请单击该站点。转到“IIS错误页”部分。单击“添加”。输入代码(401.1),并给它一个到站点页面的路径。确保匿名访问该页。

    更新:
    我发现了一些新信息。您可以在web.config中处理这个问题。有关详细信息,请参阅以下网站: learn.iis.net

    在web.config的错误部分,请执行以下操作(例如):

     <error statusCode="401" subStatusCode="1" prefixLanguageFilePath="c:\inetpub\custerr" path="401_1.htm" />
    

    我不知道你能不能用.aspx页面来做这个,但它看起来确实是这样的。然而,它们可能必须是完全独立的。

    有关的Microsoft文档 substatuscode is on MSDN . 根据他们的说法,它只适用于IIs7,.net 3.0+,并且在使用集成管道模式时。这可能有点限制,具体取决于你的应用程序。

    推荐文章