【问题标题】:anonymous access to aspx page fails匿名访问 aspx 页面失败
【发布时间】:2010-08-03 18:21:00
【问题描述】:

我有一个使用表单身份验证的网站。在大多数情况下,我的网站需要身份验证才能执行任何操作。我的隐私声明页面是一个例外,匿名用户必须可以访问。 该页面在一个文件夹中,我在web.config中设置了位置路径信息如下:

<location path="about">
    <system.web>
         <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>
</location>
<location allowOverride="true">
    <system.web>
        <authentication mode="Forms">
            <forms name="FDAuth" 
                   cookieless="UseCookies" 
                   protection="All" 
                   loginUrl="login.aspx" 
                   requireSSL="false" 
                   slidingExpiration="false"></forms>
        </authentication>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>

该配置允许匿名访问其他文件类型,但仍提示登录 aspx 页面。

也就是说,允许匿名访问此页面

www.mywebsite.com/about/privacy.asp

但如果我尝试访问此页面,我会转到 login.aspx 页面

www.mywebsite.com/about/privacy.aspx

我需要做什么才能允许匿名访问 www.mywebsite.com/about/privacy.aspx?

【问题讨论】:

    标签: asp.net forms-authentication


    【解决方案1】:

    只需删除&lt;location allowOverride="true"&gt; 元素并在&lt;system.web/&gt; 中配置&lt;authorization/&gt;

    &lt;location&gt; 标签用于定义全局策略的例外情况,通常在&lt;system.web/&gt; 内的&lt;authorization/&gt; 中定义。

    【讨论】:

    【解决方案2】:

    还有一件事:添加行&lt;allow users="?"/&gt;

    * 用户匹配任何经过身份验证的用户名,而? 匹配所有未经身份验证的用户。

    所以,你会得到这个:

    <location path="about">
        <system.web>
             <authorization>
                <allow users="*"/>
                <allow users="?"/>
            </authorization>
        </system.web>
    </location>
    

    【讨论】:

    • 感谢您的回复,但进行此更改并没有解决问题。
    【解决方案3】:

    你应该试试:

    <location path="about">
       <system.web>
          <authorization>
             <allow users="?"/>
          </authorization>
       </system.web>
    </location>
    

    根据this MSDN example

    注意?,而不是用于匿名访问的*

    这应该可以解决您的问题,但如果不能,您可以指定特定资源:

    <location path="about\privacy.aspx">
    

    【讨论】:

    • 感谢您的回复,但将 * 更改为 ?没有解决问题。
    • @jeffc 您是否尝试像我提到的那样指定确切的文件?此外,请确保您没有任何可能覆盖您当前设置的子 web.config 文件。
    【解决方案4】:

    知道了。问题是该页面使用母版页。将母版页移至 about 文件夹即可解决问题。

    感谢您的快速回复!

    【讨论】:

    • 这是最终的答案吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多