【问题标题】:ASP.Net URL rewriting and authenticationASP.Net URL 重写和身份验证
【发布时间】:2009-04-20 12:17:25
【问题描述】:

我有一个使用 .Net 2.0 框架的 Web 应用程序。整个网站仅限于使用 Windows 身份验证的经过身份验证的用户。这些规则在 web.config 文件中设置如下:

<location path="/">
    <system.web>
        <authorization>
            <allow roles="CustomerAdministrator, Manager"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>
<location path="Path/To/Public/File.aspx">
    <system.web>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>
[...]

如上所示,我有一个想要公开的页面。到目前为止,一切正常。我们最近为更好的 url 添加了 url 重写,所以我为公共页面设置了重写规则:

<RewriterConfig>
    <Rules>
        <RewriterRule>
            <LookFor>~/Public</LookFor>
            <SendTo><![CDATA[~/Path/To/Public/File.aspx]]></SendTo>
        </RewriterRule>
    </Rules>
</RewriterConfig>

现在,当通过其直接 url 访问公共页面时,它可以按预期工作(不需要身份验证),但是当我尝试通过其重写的 url 访问该页面时,它会要求身份验证。

有谁知道我的这个问题是从哪里来的?

【问题讨论】:

  • 你用什么来重写网址?

标签: .net asp.net authentication url-rewriting


【解决方案1】:

您是否尝试过更改您的位置标签以使用 /Public URL?

【讨论】:

    【解决方案2】:

    我确实发现了问题。我正在使用我的一些同事在网上找到的URLRewriter 项目,问题来自它在HttpApplicationAuthorizeRequest 事件中注册自己的事实。虽然这适用于 Forms 身份验证,但不适用于我正在使用的 Windows 身份验证。

    为了解决这个问题,我只需要对其进行更改,使其注册到BeginRequest 事件(如 cmets...RTFM...中所写)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-23
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多