共用方式為


跨應用程式的表單驗證

更新:2007 年 11 月

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

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

若要設定跨應用程式的表單驗證,請將 Web.config 檔的 formsmachineKey 區段的屬性,設定為與所有參與共用表單驗證應用程式相同的值。

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

注意事項:

如果您在每一個 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 的原始到期時間計算新的到期時間。組態 Timeout 值只有在一開始建立 Cookie 時才會使用。

表單驗證與驗證服務

您也可以使用驗證服務,以跨應用程式驗證使用者。驗證服務可讓您從任何能以 SOAP 格式傳送及使用訊息的應用程式中使用表單驗證。如需詳細資訊,請參閱 Windows Communication Foundation 驗證服務概觀

請參閱

工作

HOW TO:實作簡單表格驗證

其他資源

ASP.NET Web 應用程式安全性