文章編號: 910443 - 上次校閱: 2007年5月31日 - 版次: 1.4

瞭解表單驗證票證和 Cookie

系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。
ASP.NET 支援語音資料行

瞭解表單驗證票證和 Cookie

若要自訂您的需要此資料行的 我們想要邀請您送出您的想法,有關您感興趣的主題,而且在將來知識庫文件和支援語音資料行,處理您想要查看的問題。您可以送出您的想法和使用 Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) 表單的意見反應。另外還有連結至表單底部的 這個資料行。

在此頁中

全部展開 | 全部摺疊

簡介

歡迎使用 Microsoft ASP.NET 支援語音資料行!我 Nilay B.國王與 ASP.NET 程式開發人員支援小組。我已具有一個與半年以上的 ASP.NET 支援工作。表單驗證是真的很酷的驗證功能。本文件涵蓋一些使用者找到了令人困惑與例如表單驗證票證和表單驗證 Cookie 以及其相關的設定關聯性的表單驗證的問題。我要感謝 Jerry Orman 他擁有驚人的說明 ASP.NET 支援小組的技術指導人員 !

因為密切相關,人員有時想知道有關表單驗證 」 票證"和"Cookie"。我已經有這類的問題: 任何人都能解釋 Cookie 到期和票證到期差異??當 Cookie 過期時,使用者將被重新導向到登入頁面。票證過期時,會發生什麼事?將它也讓 Cookie 過期??什麼並 SlidingUpdate 會實際更新?

我將把重點放在表單驗證來回答下列問題本文中這些兩個層面:
  • 表單驗證票證和表單驗證 Cookie 是什麼?它們相關的方式?
  • 什麼是在表單中的票證角色驗證?
  • Cookie 到期和票證到期相關的方式?
  • 如何做了表單驗證票證的內容中的滑動到期工作和表單驗證 Cookie?
  • 其中可設定的表單驗證 Cookie 和表單驗證票證逾時屬性?
  • 問題分析藍本: 「 表單驗證可能逾時之前在組態檔中設定的逾時屬性值

表單驗證票證和表單驗證 Cookie 是什麼?它們相關的方式?

表單驗證 Cookie 是執行任何動作但表單驗證票證的容器。票證會傳遞,做為表單驗證 Cookie 與每個要求的值,並由表單] 驗證在伺服器上用來識別已驗證的使用者。

不過,如果我們選擇使用無 Cookie 的表單驗證,以加密格式 URL 中就會傳遞票證。無 Cookie 的表單驗證會使用,因為有時候用戶端瀏覽器封鎖 Cookie。這項功能是在 Microsoft.NET Framework 2.0 引入。

如需詳細資訊請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站]:
http://msdn2.microsoft.com/en-us/library/system.web.configuration.formsauthenticationconfiguration.cookieless.aspx (http://msdn2.microsoft.com/en-us/library/system.web.configuration.formsauthenticationconfiguration.cookieless.aspx)

在表單驗證票證的角色是什麼?

表單驗證票證用來告訴 [ASP.NET 應用程式,您是。因此,票證是建置組塊的表單驗證的安全性。

票證已加密,而且使用 <machinekey>簽署 伺服器的 Machine.config 檔的組態項目。 ASP.NET 2.0 會使用 decryptionKey 和新 解密 屬性的 <machinekey> 加密的項目表單驗證票證。解密 屬性可讓您指定要用的加密演算法。 ASP.NET 1.1 和 1.0 使用 3DES 加密不是可設定。竄改票證值會決定無法解密票證在伺服器上。如此一來使用者將被重新導向至登入頁面。

如果應用程式部署在 Web 伺服陣列中,您必須確定組態檔,在每一部伺服器上的共用相同的值的 <machinekey>validationKeydecryptionKey 屬性 分別用來雜湊及票證解密的標記。您必須進行此項操作,因為您不能保證哪個伺服器將會處理後續的要求。如需有關 FormsAuthenticationTicket 加密和 Web 伺服陣列部署考量的詳細資訊,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/ms998288.aspx (http://msdn2.microsoft.com/en-us/library/ms998288.aspx)
查核行程透過要以手動方式產生金鑰的方法可在下列 「 Microsoft 知識庫 」 文件中找到:
312906? (http://support.microsoft.com/kb/312906/ ) 如何建立以用於表單驗證使用 Visual C#.NET 的機碼
313091? (http://support.microsoft.com/kb/313091/ ) 如何建立以用於表單驗證使用 Visual Basic.NET 的機碼
表單驗證票證可由使用 FormsAuthenticationTicket 類別以手動方式產生。如需詳細資訊請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx (http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx)

Cookie 到期和票證到期相關的方式?

在非持續 Cookie 的情況下如果過期票證 Cookie 也會到期,使用者將被重新導向到登入頁面。在另一邊,如果票證標記為永續性 Cookie 儲存在用戶端] 方塊上的地方瀏覽器可以使用相同的驗證 Cookie 登入到網站上的任何時間。不過,我們可以使用 FormsAuthentication.SignOut 方法,以刪除永續性或非持續 Cookie 明確。

如需有關 FormsAuthentication.SignOut 方法的詳細資訊,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication.signout.aspx (http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthentication.signout.aspx)
使用無 Cookie 的表單驗證如果關閉瀏覽器票證都會遺失,在下一個要求上會產生新的票證。

如何做了表單驗證票證的內容中的滑動到期工作和表單驗證 Cookie?

滑動期限的運作完全相同的方式 !

讓我們採取範例: 如果登入網頁存取在 5: 00 00: 00: 00 PM,它就應該過期在 5: 10 00: 00: 00 PM,如果 逾時 屬性是 10,且 slidingExpiration 屬性設定為 TRUE。現在,如果任何網頁瀏覽時一次在 5: 05 00: 00: 00 PM,Cookie 和票證逾時期間會被重設到 5 15: 00: 00 PM。

附註如果 Web 網頁存取之前的到期時間傳遞一半,票證到期時間將不會重設。前景範例,如果任何 Web 網頁會存取一次在 5: 04 00: 00: 00 PM,Cookie 並不會重設票證逾時期間。

如需詳細資訊請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/1d3t3c61(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/1d3t3c61(vs.71).aspx)

其中可設定表單驗證 Cookie 和表單驗證票證的逾時值?

您可以將唯一設定是在 Web.config 檔或中 <forms>Machine.config 檔案 標記。這項變更將會決定表單驗證票證或 Cookie 的內容中的逾時期間,除非手動產生票證。

<!--
forms Attributes: 
name="[cookie name]" - Sets the name of the cookie used for Forms Authentication.
loginUrl="[url]" - Sets the URL to redirect client to for authentication.
protection="[All|None|Encryption|Validation]" - Sets the protection mode for data in cookie.
timeout="[minutes]" - Sets the duration of time for cookie to be valid (reset on each request).
path="/" - Sets the path for the cookie.
requireSSL="[true|false]" - Should the forms authentication cookie be sent only over SSL?
slidingExpiration="[true|false]" - Should the forms authentication cookie and ticket be reissued if they are about to expire?
-->
如需詳細資訊請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/1d3t3c61.aspx (http://msdn2.microsoft.com/en-us/library/1d3t3c61.aspx)
如果票證由使用 FormsAuthenticationTicket 類別手動產生,可透過 到期 屬性設定逾時。這個值會覆寫組態檔中指定的 逾時 屬性值。

如需有關 FormsAuthenticationTicket 成員的詳細資訊,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket_members.aspx (http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket_members.aspx)

問題分析藍本: 「 表單驗證可能逾時之前在組態檔中設定的逾時屬性值

如果以手動方式產生的表單驗證票證時的票證逾時屬性會覆寫在組態檔中設定的值。因此,如果該值小於組態檔中值,的表單驗證票證到期之前組態檔 的逾時 屬性值,反之亦然。比方說我們假設,<forms>逾時 屬性,會在 Web.config 檔中設定為 30,而且的票證的 [到期日] 值設定為 20 分鐘。在這種情況下表單驗證票證將 20 分鐘後過期,而且使用者必須登入後,再。

相關連結

910439? (http://support.microsoft.com/kb/910439/ ) 表單驗證的疑難排解
若要取得述 Microsoft 知識庫 」 文件 910439 FormsAuthLogger.exe 檔案,請造訪下列 Microsoft 網站]:
http://www.microsoft.com/downloads/details.aspx?FamilyID=4a54e56f-61b4-48a8-9e01-4187173539da&displaylang=en (http://www.microsoft.com/downloads/details.aspx?FamilyID=4a54e56f-61b4-48a8-9e01-4187173539da&displaylang=en)
891032? (http://support.microsoft.com/kb/891032/ ) 疑難排解 ASP.NET
301240? (http://support.microsoft.com/kb/301240/ ) 如何使用 C#.NET,ASP.NET 應用程式中實作表單型驗證
308157? (http://support.microsoft.com/kb/308157/ ) 如何使用 Visual Basic.NET,ASP.NET 應用程式中實作表單型驗證
我希望你找到這項資訊很有幫助簡化混淆 ASP.NET 表單驗證票證和 Cookie 的相關部份。請記住支援語音資料行是為您!如往常請隨意提交上您想要在將來解決資料行的主題或 「 Microsoft 知識庫 」 中使用 Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) 表單的想法。

這篇文章中的資訊適用於:
  • Microsoft ASP.NET 2.0
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
關鍵字:?
kbmt kbhowto kbasp KB910443 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:910443? (http://support.microsoft.com/kb/910443/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。