2010-08-03 98 views
1

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

<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匿名访问?

回答

0

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

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

所以,你会这样:

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

感谢您的回复,但是做出这样的改变并没有解决问题。 – jeffc 2010-08-03 19:03:26

1

刚内取出<location allowOverride="true">元素和配置<authorization/><system.web/>

<location>标签被用来定义例外全球政策,这通常是在定义<authorization/><system.web/>之内。

+0

这就是我最初的样子,但基于这个答案改变了它类似的问题http://stackoverflow.com/questions/1354185/how-do-i-grant-anonymous-access-to-a-url- using-formsauthentication两种方式都不允许匿名访问/about/privacy.aspx页面 – jeffc 2010-08-03 19:05:40

0

你应该尝试:

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

this MSDN example

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

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

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

感谢您的回复,但将*更改为?没有解决问题。 – jeffc 2010-08-03 19:07:41

+0

@jeffc你是否尝试指定像我提到的确切文件?另外,请确保您没有任何儿童网站。配置文件可能会覆盖你当前的设置。 – Kelsey 2010-08-03 20:15:13

0

明白了。问题在于该页面使用母版页。将母版页移动到about文件夹解决了问题。

感谢快速回复!

+0

这是最终答案? – bgmCoder 2013-04-30 16:28:00