共用方式為


跨應用程式的表單驗證

ASP.NET 支援單一伺服器或 Web 伺服陣列中,跨所有應用程式之分散式環境的表單驗證。啟用跨多個 ASP.NET 應用程式的表單驗證時,使用者就不需要在應用程式切換之間重新驗證。

設定跨應用程式的表單驗證

若要設定跨應用程式的表單驗證,可以在表單machineKey 組態區段中設定幾個屬性,讓參與共用表單驗證的所有應用程式都有相同值。

下列範例示範 Web.config 檔案的 Authentication 區段。除非另有說明,否則 nameprotectionpathvalidationKeyvalidationdecryptionKeydecryption 屬性在所有應用程式上都必須完全相同。同樣地,用於 Cookie 資料的加密和驗證金鑰 (Key) 以及加密機制和驗證機制都必須完全一樣。如果設定不符,Cookie 就不能共用。

Note注意事項

假如您為每個 ASP.NET 2.0 版應用程式在 machineKey 項目組態中加入 decryption="3DES",則執行 ASP.NET 2.0 版的應用程式可以與舊版 ASP.NET 共用表單驗證票證資訊。

<configuration>
  <system.web>
    <authentication mode="Forms" >
      <!-- The name, protection, and path attributes must match 
           exactly in each Web.config file. -->
      <forms loginUrl="login.aspx"
        name=".ASPXFORMSAUTH" 
        protection="All"  
        path="/" 
        timeout="30" />
    </authentication>

    <!-- Validation and decryption keys must exactly match and cannot
         be set to "AutoGenerate". The validation and decryption
         algorithms must also be the same. -->
    <machineKey
      validationKey="[your key here]" 
      decryptionKey="[your key here]" 
      validation="SHA1" />
  </system.web>
</configuration>

在核發 Cookie 後,就會根據 Cookie 本身的 Expires 值,追蹤 Cookie 的期限。這意味著如果兩套應用程式有不同的 Timeout 屬性,則在原本核發每個 Cookie 時所設定的到期日和時間,在整個 Cookie 存留期間都會保留。當更新 Cookie 時,會使用 Cookie 的原始到期時間計算新的到期時間。組態 Timeout 值只有在一開始建立 Cookie 時才會使用。

請參閱

工作

HOW TO:實作簡單表格驗證

其他資源

ASP.NET Web 應用程式安全性