在我的web.config中,我有以下身份验证设置:
<authentication mode="Forms">
<forms loginUrl="login.aspx" name="signin" path="/" protection="All" timeout="525600">
</forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
出于某种原因,如果我发表评论,我可以看到我的网站与所有资产(js,css,图像)完全一致,但是如果我取消注释它,没有资产可以到达,而只是重定向到登录页面。
答案 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>