ASP.NET 設定檔縱橫談(二)

來源:互聯網
上載者:User
下面我們就來看看<location/>節點。我們常常在設定檔設定這個節點來對URL訪問進行授權。我們可以在一個ASP.NET網站(如:c:\inetpub\wwwroot\Demo\web.config的web.config中添加下面的配置:<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中配置下面的:

<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中這樣配置的:

<membership defaultProvider="FirstProviderDefinition"
  hashAlgorithmType="SHA1"
  userIsOnlineTimeWindow="15" >

 

 

      我們可能認為SHA1加密的安全不夠,我們就在machine.config中配置:

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

 

      這樣,我們以後的網站就不能再修改hashAlgorithmType了。
      同理,我們也可以鎖定多個屬性:

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

 

 

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

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

 

     

      如果我們在machine.config配置如下:<membership ... lockAttributes="*" />,那麼在每個網站中就不能在重寫membership的任何屬性。

      下面來看看鎖定元素。
      我們還是以<membership />節點為例子。在<membership />中,我們可以添加很多的節點元素,如<providers />,<add />, <remove />,  <clear />,我們也可以在machine.config鎖定某個元素,如<membership lockElements="providers">,所以,任何試圖在我們開發的網站中去改變<providers />都會出錯。
      同理,lockAllElementsExcept用法和lockAllAttributesExcept一樣。而且我們還可以把所有的元素鎖定,如下

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

 

     而且上面的鎖定元素和屬性的可以結合起來用。  如:

 

<membership lockElements="providers" lockAttributes="defaultProvider,hashAlgorithmType">

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.