我有一个使用表单身份验证的网站。在大多数情况下,我的网站需要身份验证才能执行任何操作。我的隐私声明页面是一个例外,匿名用户必须可以访问。 该页面位于一个文件夹中,我在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?
答案 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>
请注意?
,而不是用于匿名访问的*
。
这应该可以解决您的问题,但如果没有,您可以指定特定的资源:
<location path="about\privacy.aspx">
答案 3 :(得分:0)
知道了。问题是页面使用母版页。将母版页移动到about文件夹解决了问题。
感谢快速回复!