控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

ASP.NET 配置文件纵横谈(二)

作者:小洋 出处:博客园 2010年01月27日 阅读:

下面我们就来看看<location/>节点。我们常常在配置文件设置这个节点来对URL访问进行授权。我们可以在一个ASP.NET网站(如:c:\inetpub\wwwroot\Demo\web.config的web.config中添加下面的配置:

Code
 <location path="Some Path ">
  <system.web>
   <authorization>
    <allow roles="Secured, Administrators" />
    deny users="*" />
   </authorization>
  </system.web>
 </location>
     <location/>元素被解释为一个新的虚拟的配置文件,也就是说我们其实也可以把<location/>元素中的配置拿出来,放在一个单独的web.config中,就像我们在网站的一个文件夹中加入一个web.config一样。所以在<location/>元素中要申明<system.web>,而且不能直接就把<authorization />元素放在<location/>下。

      在网站中,经常要对很多的页面进行授权访问,所以我们也常常可以把那些页面放在一个文件夹中,然后在文件夹中放一个web.config。相较于前者,在网站根目录中用<location/>元素来进行URL授权更加的好些,因为可以在一个文件中对所有的文件进行授权和对授权进行修改。而且如果进行URL授权的文件夹很多,那么我看可能在修改的时候遗漏某处,而导致运行失败。


      在<location/>中,有一个属性就是path,用来设置进行URL授权的文件,或者文件夹。而且我们还path属性的配置也很灵活的,可以设置path的值来对某个文件设置url授权访问,如path="default.aspx",还可以对文件夹进行授权访问,如"subfolder"(注:subfolder是网站中的某个文件夹),还可以将之前的两者结合,如"subfolder/default.aspx","subfolderA/subfolderB".如果我们在IIS虚拟目录下放置一个web.config,我们还可以设置对某个网站的授权访问,如"Default WebDite"。 所以在<location/>中用path元素可以对要授权的文件,文件夹进行集中的控制。
 

      下面来看看allowoverride属性
      很多的节点元素都有这个属性,这个属性可以防止下一级的配置文件中上一级的配置文件的某个元素进行重写(关于配置文件的层级关系见第一篇,从上到下基本是:machine.config--web.config)。对于<location/>,如果在machine.config中配置下面的:

Code
 <location allowOverride="false">
  <system.web>
   <trust level="Medium" />
  </system.web>
 </location>
      那么如果你在你的网站的web.config中再去重新定义<location/>就会报错。

      与lock有关的属性的使用
      主要包含lockAttributes,lockElements,lockAllAttributesExcept,lockAllElementsExcept,充字面意思就很容易理解它们的作用。
      首先来看看lockAttributes。我们可以在很高层级来定义某个元素的lockAttributes或者lockAllAttributesExcept,如,我们可以在machine.config中设置某个元素的属性,使得下一级的web.config不能重写锁定的属性。例如,我们知道<membership />有很多的属性:defaultProvider, userIsOnlineTimeWindow,hashAlgorithmType等。可能我们希望所有的程序提供者(providers)都配置为hashAlgorithmType=SHA256哈希加密,因为安全的需要。


      我们一般在我们的网站中的 web.config中这样配置的:

Code
 <membership defaultProvider="FirstProviderDefinition"
  hashAlgorithmType="SHA1"
  userIsOnlineTimeWindow="15" >
      我们可能认为SHA1加密的安全不够,我们就在machine.config中配置:
 

Code
<membership hashAlgorithmType="SHA256" lockAttributes="hashAlgorithmType">

      这样,我们以后的网站就不能再修改hashAlgorithmType了。
      同理,我们也可以锁定多个属性:
 

Code
<membership hashAlgorithmType="SHA256" lockAttributes=
"hashAlgorithmType;userIsOnlineTimeWindow;defaultProvider">

      同理,lockAllAttributesExcept的用法不再赘述,例如:

Code
<membership hashAlgorithmType="SHA256" lockAllAttributesExcept=
"userIsOnlineTimeWindow" >。


  如果我们在machine.config配置如下:<membership ... lockAttributes="*" />,那么在每个网站中就不能在重写membership的任何属性。

      下面来看看锁定元素。
      我们还是以<membership />节点为例子。在<membership />中,我们可以添加很多的节点元素,如<providers />,<add />, <remove />,  <clear />,我们也可以在machine.config锁定某个元素,如<membership lockElements="providers">,所以,任何试图在我们开发的网站中去改变<providers />都会出错。
      同理,lockAllElementsExcept用法和lockAllAttributesExcept一样。而且我们还可以把所有的元素锁定,如下

Code
 <membership>
  <providers lockElements="*">
  
  </providers>
 </membership>

      而且上面的锁定元素和属性的可以结合起来用。  如:   

Code
 <membership lockElements="providers" lockAttributes="defaultProvider,hashAlgorithmType">(本文由控件中国网转载)

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统