我有一个目录包含一些文件, 我想只有在用户成功登录网站时才允许访问此目录中的文件。 登录用户和密码由aspNet Membership表管理并存储在DB中。
如果目录位于网站上会很容易,因为它默认受限制 但目录的物理路径在网站内不 我更喜欢这样做,因为这个目录可以从其他网站访问
如何解决这个问题? 感谢
答案 0 :(得分:1)
您应该将runAllManagedModulesForAllRequests属性添加到web.config中的modules标记,如下所示:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
...
</modules>
...
</system.webServer>
这将对所有文件(如word文档等)强加您的dotnet安全性。然后,您可以使用web.config中的location部分来保护文件夹,如下所示:
<location path="SomeVirtualDirectory">
<system.web>
<authorization>
<allow roles="admin" />
<deny users="*" />
</authorization>
</system.web>
</location>
答案 1 :(得分:0)
无法在网站目录之外导航,因为它超出了您网站的范围,并且无法取决于网站凭据。
答案 2 :(得分:0)
文件目录不必是您网站的物理子目录。如果您add it as a virtual directory inside your application,则可以恰当地设置身份验证。
或者您可以发出类似this的内容:
string filename = @"F:\SomeDirectory\Foo.txt";
Response.TransmitFile(filename);
然后您可以在此页面上设置身份验证,例如名为DownloadFile.aspx
。