即使将web.config设置为允许它,ASP.NET也会为文件返回401未经授权?

问题描述

我可能在这里缺少一些简单的东西,但是我有一个使用身份和角色的ASP.NET网站,并且我试图限制对包含某些MP4视频的文件夹的访问,以使匿名用户无法看到指向以下内容的直接链接这些视频。

我在web.config中有以下文件夹:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <authorization>
          <allow roles="Admin"/>
          <allow roles="User"/>
          <deny users="*" />
        </authorization>
    </system.web>
</configuration>

asp:LoginView控件在此设置下工作正常,但是视频返回401错误

我也尝试了同样的结果:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <authorization>
            <deny users="?" />
        </authorization>
    </system.web>
</configuration>

如果我从授权标签删除了所有内容,那么它可以正常工作,因此我知道所有路径都是正确的,并且有关授权设置的某些规定阻止了该视频的播放。

我还尝试过像这样单独调出Files目录:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <authorization>
            <allow roles="Admin"/>
            <allow roles="User"/>
            <deny users="*" />
        </authorization>
    </system.web>
    <location path="Files">
        <system.web>
            <authorization>
                <allow users="*" />
            </authorization>
        </system.web>
    </location>
</configuration>

不幸的是,这样做使我即使未登录也可以访问视频链接(这是我要防止的事情)。

如果我尝试像这样对“文件”子文件夹进行基于角色的设置(我认为它与第一个版本应该没有什么不同),那么即使在登录时,我也会回到视频401上在:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.web>
        <authorization>
            <allow roles="Admin"/>
            <allow roles="User"/>
            <deny users="*" />
        </authorization>
    </system.web>
    <location path="Files">
        <system.web>
            <authorization>
                <allow roles="Admin"/>
                <allow roles="User"/>
                <deny users="*" />
            </authorization>
        </system.web>
    </location>
</configuration>

在这里想念什么?

解决方法

我修改了答案。我认为以下是您要寻找的:

How to prevent anonymous users from accessing a file using forms authentication?