ASP.NET 支援單一伺服器或 Web 伺服陣列中,跨所有應用程式之分散式環境的表單驗證。啟用跨多個 ASP.NET 應用程式的表單驗證時,使用者就不需要在應用程式切換之間重新驗證。
設定跨應用程式的表單驗證
若要設定跨應用程式的表單驗證,可以在表單和 machineKey 組態區段中設定幾個屬性,讓參與共用表單驗證的所有應用程式都有相同值。
下列範例示範 Web.config 檔案的 Authentication 區段。除非另有說明,否則 name、protection、path、validationKey、validation、decryptionKey 和 decryption 屬性在所有應用程式上都必須完全相同。同樣地,用於 Cookie 資料的加密和驗證金鑰 (Key) 以及加密機制和驗證機制都必須完全一樣。如果設定不符,Cookie 就不能共用。
注意事項 |
|---|
假如您為每個 ASP.NET 2.0 版應用程式在 machineKey 項目組態中加入 |
<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 時才會使用。
注意事項