匿名访问aspx页面失败

时间:2010-08-03 18:21:00

标签: asp.net forms-authentication

我有一个使用表单身份验证的网站。在大多数情况下,我的网站需要身份验证才能执行任何操作。我的隐私声明页面是一个例外,匿名用户必须可以访问。 该页面位于一个文件夹中,我在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?

4 个答案:

答案 0 :(得分:1)

只需删除<location allowOverride="true">元素,然后在<authorization/>

中配置<system.web/>

<location>标记用于定义全局策略的例外情况,通常在<authorization/>内的<system.web/>中定义。

答案 1 :(得分:0)

还有一件事:添加行<allow users="?"/>

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

所以,你会有这个:

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

答案 2 :(得分:0)

你应该尝试:

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

根据this MSDN example

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

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

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

答案 3 :(得分:0)

知道了。问题是页面使用母版页。将母版页移动到about文件夹解决了问题。

感谢快速回复!