默认配置下,通过配置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"
/>
<
deny
users
="*"
/>
</
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