如何仅允许经过身份验证的用户访问Web文件夹

时间:2016-02-04 19:21:32

标签: asp.net

我的网络应用程序使用表单身份验证模式。

<authentication mode="Forms">
  <forms loginUrl="Logon.aspx" protection="All" path="/" timeout="60" slidingExpiration="false" />
</authentication>

<authorization>
  <deny users="?"/>
</authorization>

我的网络应用程序中有一个名为&#34; Documentos&#34;的文件夹,其中包含大量PDF文件。

我的程序允许用户使用其URL地址加载PDF文件:

http://MyHost/MyWebApp/Documentos/1.pdf

但是,我需要将该功能仅限于经过身份验证的用户。

为此,我输入了我的web.config:

  <location path="Documentos">
      <system.web>
          <authorization>
              <deny users="?" />
          </authorization>
      </system.web>
  </location>

但它并没有任何区别。任何人仍然可以在文件夹Documentos中加载任何PDF文件:

http://MyHost/MyWebApp/Documentos/1.pdf

我可以完成我正在寻找的内容,还是应该以不同的方式处理它?<​​/ p>

修改

Win的解决方案和理查德的解决方案都是正确的。这是将这些设置放在web.config中的方法:

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>

  </system.webServer>
  <location path="Documentos">
        <system.web>
            <authorization>
                <deny users="?" />
            </authorization>
        </system.web>
  </location>  

2 个答案:

答案 0 :(得分:2)

哟有两个选择 -

选项1

如果您的Web应用程序不是根级别,请使用〜/。

<location path="~/Documentos">
      <system.web>
          <authorization>
              <deny users="?" />
          </authorization>
      </system.web>
  </location>

选项2

创建一个包含以下内容的web.config,并将其放在Documentos文件夹中。

<?xml version="1.0"?>
<configuration>

  <system.web>
    <authorization>
      <deny users="?"/>
    </authorization>
  </system.web>

</configuration>

答案 1 :(得分:1)

问题是默认情况下,auth部分仅适用于通过管道的请求,而不适用于静态文件。要执行您想要的操作,请将以下属性添加到模块部分:

foo bar.txt