跨應用程式的表單驗證
更新:2007 年 11 月
ASP.NET 支援單一伺服器或 Web 伺服陣列中,跨所有應用程式之分散式環境的表單驗證。啟用跨多個 ASP.NET 應用程式的表單驗證時,使用者就不需要在應用程式切換之間重新驗證。
設定跨應用程式的表單驗證
若要設定跨應用程式的表單驗證,請將 Web.config 檔的 forms 和 machineKey 區段的屬性,設定為與所有參與共用表單驗證應用程式相同的值。
下列範例示範 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 驗證服務概觀。