如何使用表单身份验证防止对子文件夹中的.csv文件进行未经身份验证的访问

时间:2018-01-11 15:04:12

标签: asp.net iis

我有一个ASP.NET应用程序,它使用表单身份验证,并允许用户在子文件夹中创建一些非.ASxt文件,如.txt或.csv以供下载。如果用户未登录,则可以正确阻止访问用于浏览的子文件夹,但无需登录即可查看/下载.txt或.csv文件。如何确保只有登录用户才能从中下载任何文件该子文件夹(无需额外登录)?

我的最后一次尝试是在web.config中的这个(在其他一些帖子中找到),试图强制ASP.NET也处理.csv和.txt文件,并将它们包含在表单身份验证中:

<system.webServer> 
  <modules> 
    <remove name="UrlAuthorization" /> 
    <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" /> 
  </modules>
...

2 个答案:

答案 0 :(得分:2)

如果我没记错的话,这应该可以解决问题:

<location path="Folder/">
        <system.web>
            <authorization>
                <allow roles="YOURROLE" />
                <deny users="*"/>
            </authorization>
        </system.web>
</location>

为了实现这一点,我认为应用程序必须以集成模式运行,或者至少在mime设置中引入文件类型。

答案 1 :(得分:0)

这在主web.config中最终为我做了,不需要任何其他更改。它强制ASP.NET处理所有文件类型,包括CSV文件,因此所有文件现在都受到表单身份验证的保护。我希望尽管这没有任何不必要的副作用,因为这个解决方案比我希望的更全局,而不仅仅是保护一个子文件夹中的一个特定文件类型。欢迎评论。

<system.webServer> 
 <modules> 
  <remove name="FormsAuthenticationModule" />    
  <add name="FormsAuthenticationModule" type="System.Web.Security.FormsAuthenticationModule" />    
  <remove name="UrlAuthorization" />    
  <add name="UrlAuthorization" type="System.Web.Security.UrlAuthorizationModule" />    
  <remove name="DefaultAuthentication" />    
  <add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" />    
 </modules> 
</system.webServer>

来源:https://docs.microsoft.com/en-us/iis/application-frameworks/building-and-running-aspnet-applications/how-to-take-advantage-of-the-iis-integrated-pipeline