我有一个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>
...
答案 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>