[ASP.NET2.0]限制web使用者對指定目錄下的特定型別檔案的訪問
阿新 • • 發佈:2019-02-17
預設配置下,通過配置web.config檔案,比如下邊的形式:
<?xml version="1.0" encoding="utf-8"?><configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
<authorization>
<allow roles="Members"/>
<allow roles="Administrators"/>
</authorization>
</system.web>
</configuration>
我們可以實現對特定目錄下的ASPX檔案的保護,使得特定角色可以才能訪問.但如果我們要保護的檔案不是ASPX檔案,這種單純的配置將不起作用.
現在我們可以通過以下方式實現對特定目錄下的特定型別檔案的保護.:
1.配置IIS,將特定型別的檔案對映到asp.net isapi;
比如將.rar對映到asp.net isapi
2.在受保護目錄下建立web.config檔案,並配置授權訪問規則
3.在web.config的<system.web>段新增以下內容:
<httpHandlers>
<add path="*.rar" verb="*" type="System.Web.StaticFileHandler" validate="True" />
</httpHandlers>
至此,配置完成.
完整的web.config形式如下:
<?xml version="1.0" encoding="utf-8"?><configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
<authorization>
<allow roles="Administrators"/>
<allow roles="Members"/>
<deny users="*"/>
</authorization>
<httpHandlers>
<add path="*.rar" verb="*" type="System.Web.StaticFileHandler" validate="True"/>
<add path="*.zip" verb="*" type="System.Web.StaticFileHandler" validate="True"/>
<add path="*.doc" verb="*" type="System.Web.StaticFileHandler" validate="True"/>
<add path="*.ppt" verb="*" type="System.Web.StaticFileHandler" validate="True"/>
<add path="*.xls" verb="*" type="System.Web.StaticFileHandler" validate="True"/>
</httpHandlers>
</system.web>
</configuration>
注意:以上配置中,我還添加了對zip,doc,ppt,xls檔案的保護.
如果需要保護的子目錄的上層目錄有與被保護的檔案型別相同的檔案,並且希望這些上層目錄的檔案不被保護,那麼你需要在上層目錄(不需要檔案保護)的web.config中的<system.web>段新增如下的資訊:
<httpHandlers><add path="*.rar" verb="*" type="System.Web.StaticFileHandler" validate="False"/>
<add path="*.zip" verb="*" type="System.Web.StaticFileHandler" validate="False"/>
<add path="*.doc" verb="*" type="System.Web.StaticFileHandler" validate="False"/>
<add path="*.ppt" verb="*" type="System.Web.StaticFileHandler" validate="False"/>
<add path="*.xls" verb="*" type="System.Web.StaticFileHandler" validate="False"/>
</httpHandlers>
這樣,配置幾乎就完美了。
----------------------------
參考資料:http://forums.asp.net/thread/1307695.aspx