web.config中的身份验证导致我的所有资产无法访问

时间:2011-10-19 06:29:35

标签: c# asp.net forms-authentication

在我的web.config中,我有以下身份验证设置:

<authentication mode="Forms">
            <forms loginUrl="login.aspx" name="signin" path="/" protection="All" timeout="525600">
            </forms>
        </authentication>
<authorization>
            <deny users="?"/>
        </authorization>

出于某种原因,如果我发表评论,我可以看到我的网站与所有资产(js,css,图像)完全一致,但是如果我取消注释它,没有资产可以到达,而只是重定向到登录页面。

4 个答案:

答案 0 :(得分:2)

here is a nice in-depth article for you。基本上,它表示您可以通过添加<location>块来在web.config中进行配置:

<!-- file level access -->
            <location path="default1.aspx">
            <system.web>
            <authorization>
                <allow users ="*" />
            </authorization>
            </system.web>
            </location>
<!--  folder access (and its contents)  -->
            <location path="subdir1">
            <system.web>
            <authorization>
                <allow users ="*" />
            </authorization>
            </system.web>
            </location>
    </configuration>

from this KB article以及更多信息here

答案 1 :(得分:1)

使用Location元素。

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

答案 2 :(得分:0)

看起来资产是通过ASP.NET管道提供的。请检查以下主题:

Prevent IIS from serving static files through ASP.NET pipeline

答案 3 :(得分:0)

    deny users="?"

表示没有未经身份验证的用户可以在root用户访问该站点,它将重定向到登录页面。我通常始终保持root(/)public(允许users =“*”)并使用该位置设置受保护的文件夹。这将使根目录下的图像,CSS和脚本文件夹可供公共访问。

如果您可以轻松地将受保护的页面移动到另一个文件夹中,这应该对您有用:

<configuration>
    <system.web>
        <authentication mode="Forms">
            <forms loginUrl="login.aspx" name="signin" path="/" protection="All" timeout="525600">
            </forms>
        </authentication>
        <authorization>
            <allow users="*"/>
        </authorization>
    </system.web>

    <location path="protected">
        <authorization>
            <deny users="?" />
        </authorization>
    </location>
</configuration>