我正在使用asp.net mvc 2和vs 2008。
我试图制作一个使用表单授权的网站。当我尝试限制访问某些页面时,我使用asp.net管理工具。在那里,我创建规则,例如,拒绝匿名用户访问整个网站。管理员工具会在根web.config文件中添加以下部分:
<authorization>
<deny users="?" />
</authorization>
当我在某个子文件夹中执行相同的操作时,例如%ApplicationRoot%/View/Protected,管理员工具也会按预期在提到的子文件夹中添加web.config文件,并使用以下代码:
<configuration>
<system.web>
<authorization>
<deny users="UserName" />
</authorization>
</system.web>
这些文件之间的主要区别在于根web.config授权部分具有一定的影响(一般来说,它按计划工作-拒绝所有未经身份验证的用户访问整个网站)。但是子文件夹web.config授权部分根本没有任何影响。 我发现当以下代码添加到根配置文件时:
<location path="Protected">
<authorization>
<deny users="UserName" />
</authorization>
</location>
这项工作的表现很好 - 它按计划拒绝了%UserName%访问%ApplicationRoot%/View/Protected Folder中的所有视图。
这种行为类似于Cassini和IIS,我都尝试过了。
主要问题是我需要一种友好的管理工具来完成此项工作,因此我请求任何关于这个问题的帮助 - 为什么当web.config文件位于子文件夹中时,授权部分不起作用?
P.S.我在子文件夹的web.config中尝试放置不正确的代码:
<authorization>
asdfg
</authorization>
没有效果。可能整个部分由于某些问题而被忽略了?
另外,在同一文件中,授权部分之外的不正确代码会导致错误。