gpt4 book ai didi

asp.net - 将 Windows 身份验证重定向到自定义 401 页面

转载 作者:行者123 更新时间:2023-12-04 21:48:54 40 4
gpt4 key购买 nike

我们正在将一些以前在表单例份验证下运行的 Web 应用程序转换为现在作为 Windows 身份验证运行。我想重新创建表单例份验证所具有的页面安全性,并对实际页面进行最少的修改。我能够使用简化的网络应用程序重新创建我想要的效果。我在 Server 2008 R2 集成管道 IIS 7.5 上运行该应用程序。

我使用 Windows 身份验证创建了一个简单的 3 页应用程序。三页分别是:

  • Openpage.aspx,对任何经过身份验证的用户开放
  • Blockedpage.aspx 对所有用户都被阻止(象征一个目录或页面,根据用户角色将被阻止给一部分用户)
  • ErrorPage.aspx,如果blockedpage.aspx 被访问(和拒绝),应用程序应该转发到ErrorPage.aspx,在那里用户可以获取关于应用程序的一般信息。

  • 应用程序的 Web.Config:
    <configuration>
    <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <authentication mode="Windows"/>
    <authorization>
    <deny users="?" />
    <allow users="*" />
    </authorization>
    </system.web>
    <location path="blockedpage.aspx">
    <system.web>
    <authorization>
    <deny users="*"/>
    </authorization>
    </system.web>
    </location>
    <system.webServer>
    <httpErrors errorMode="Custom" >
    <remove statusCode="401" subStatusCode="-1" />
    <error statusCode="401" path="/development/simplesecurityapp/errorpage.aspx" responseMode="ExecuteURL" />
    </httpErrors>

    <validation validateIntegratedModeConfiguration="false" />
    <defaultDocument>
    <files>
    <clear />
    <add value="openpage.aspx" />
    </files>
    </defaultDocument>
    </system.webServer>

    </configuration>

    (如果我不尝试在 asp.net 级别重定向 401 错误,我只会得到标准的“未授权消息”,这不是我想给用户的效果。)

    但是,我收到一个我不明白的错误 - 每次服务器重置时,应用程序都会停止工作。 IIS 只是返回401 错误,直到浏览器弹出手动登录控件,无法满足。 (我从不希望我的用户看到浏览器登录提示)

    但是,如果我在设置应用程序后替换 httperrors 部分(通过编辑 Web 配置,或使用服务器 GUI 更新它)删除该部分,访问页面,然后重新添加该部分,应用程序开始工作正如预期的那样,并继续直到服务器重新启动,此时它开始再次为用户提供手动登录弹出窗口,他们无法解决。

    1) 这是使用 Windows 身份验证保护应用程序的正确方法吗(有没有更好的方法来配置像表单一样无法访问的目录,但仍然提供自定义错误页面?)

    2)这是集成管道的影响吗?为什么它会这样工作?

    最佳答案

    您正在尝试通过传输错误消息提供内容。

    Forms 允许你这样做,因为它由第 7 层的东西组成,比如 302s 和 200s。客户端浏览器将 401 解释为“服务器不喜欢我的凭据,因此弹出一个对话框以要求提供新凭据”。

    一个经过身份验证的页面至少会产生 1 401 才能通过身份验证;您正在为其他事情重载“错误”可能是问题的根源。

    我不确定是否有一种优雅的方式来做你想做的事。

    关于asp.net - 将 Windows 身份验证重定向到自定义 401 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9066328/

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