了解表單驗證票證和 Cookie

ASP.NET 支援語音資料行

了解表單驗證票證和 Cookie

若要自訂這個資料行,您的需求,我們想要邀請您送出您感興趣,您和您要查看的問題的主題相關的想法將來解決知識庫文件和 Support Voice 資料欄。您可以在您的想法和意見反應使用要求的它表單提交。此外,還有在本專欄的底部表格的連結。

簡介

歡迎使用 Microsoft ASP.NET Support Voice 資料行 !我 Nilay B 國王與 ASP.NET 程式開發人員支援小組。我已有超過一個半年的 ASP.NET 支援工作。表單驗證是真的很酷的驗證功能。本文涵蓋一些使用者覺得混淆使用表單驗證,例如表單驗證票證和表單驗證 cookie 以及其相關的設定值的關聯性的問題。我想要感謝 Jerry Orman,對於 ASP.NET 支援小組,幫助他不可思議的技術指導人員 !

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

我將重點放在表單驗證這兩項,在此文件,以回答下列問題︰

  • 表單驗證票證和表單驗證 cookie 為何?它們相關的方式?

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

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

  • 如何進行表單驗證票證的內容中的滑動到期工作和表單驗證 cookie?

  • 其中可設定的表單驗證 cookie 和表單驗證票證的逾時屬性?

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

表單驗證票證和表單驗證 cookie 為何?它們相關的方式?

表單驗證 cookie 是 dll 只表單驗證票證的容器。票證會傳遞做為表單驗證 cookie,每個要求的值,並由表單驗證,在伺服器上,用來識別已驗證的使用者。

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

如需詳細資訊,請造訪下列 Microsoft 開發人員網路 (MSDN) 網站︰

http://msdn2.microsoft.com/en-us/library/system.web.configuration.formsauthenticationconfiguration.cookieless.aspx

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

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

票證已加密,而且簽章使用伺服器的 Machine.config 檔案的< 電腦 > 的金鑰設定項目。ASP.NET 2.0 會使用decryptionKey和新解密項目的屬性< 電腦 > 的金鑰來加密表單驗證票證。解密屬性可讓您指定要用的加密演算法。ASP.NET 1.1 和 1.0 使用 3DES 加密,這不是可設定。竄改的票證值取決於將該伺服器上的票證解密失敗。如此一來,使用者會被重新導向到登入頁面。


如果應用程式部署在 Web 伺服陣列中,您必須確定在組態檔,在每一部伺服器上的共用相同的值為validationKey和decryptionKey中的屬性< 電腦 > 的金鑰標籤中,分別用來雜湊和解密票證。您必須執行這項操作,因為您無法保證哪個伺服器將會處理後續的要求。如需有關FormsAuthenticationTicket加密和 Web 伺服器陣列的部署考量的詳細資訊,請造訪下列 MSDN 網站︰

http://msdn2.microsoft.com/en-us/library/ms998288.aspx逐一檢查要手動產生金鑰的方法,請參閱下列微軟知識庫文件︰

312906如何使用 Visual C#.NET 用於表單驗證來建立機碼

313091如何使用在表單驗證中使用的 Visual Basic.NET 中建立機碼

使用FormsAuthenticationTicket類別,並可以手動產生表單驗證票證。如需詳細資訊,請造訪下列 MSDN 網站︰

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使用無 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:00 PM。

注意如果網頁存取之前到期時限的一半,將不重設票證到期時間。前景範例中,會在任何網頁存取一次在 5:04 00:00:00 PM 的 cookie 和票證逾時期間將不會重設。

如需詳細資訊,請造訪下列 MSDN 網站︰

http://msdn2.microsoft.com/en-us/library/1d3t3c61(vs.71).aspx

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

唯一的設定,可讓您是在 Web.config 檔或 Machine.config 檔案< form >標記中。這項變更將會決定在內容中的表單驗證票證的 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如果票證由使用FormsAuthenticationTicket類別以手動方式產生,則可設定逾時,透過到期屬性。這個值會覆寫組態檔中指定的逾時屬性值。

如需有關FormsAuthenticationTicket成員的詳細資訊,請造訪下列 MSDN 網站︰

http://msdn2.microsoft.com/en-us/library/system.web.security.formsauthenticationticket_members.aspx

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

如果以手動方式產生表單驗證票證,票證的 [逾時] 屬性會覆寫組態檔中設定的值。因此,如果此值小於組態檔中的值,則的表單驗證票證到期之前的組態檔的等候逾時屬性值,反之亦然。例如,假設在將在 Web.config 檔中的< form >逾時屬性設為 30 和票證的過期值設定為 20 分鐘。在此情況下,表單驗證票證試用期 20 分鐘,而且使用者必須登入一次是在那之後。

相關的連結

910439疑難排解表單驗證

891032疑難排解 ASP.NET

301240如何實作 ASP.NET 應用程式中的表單架構驗證,使用 C#.NET

如何實作 ASP.NET 應用程式中的表單架構驗證,使用 Visual Basic.NET 的308157

我希望您會發現這項資訊很有幫助簡化處理 ASP.NET 表單驗證票證和 cookie 的困惑。請記住,Support Voice 資料欄是您 !如往常,我們編寫哪一方面送出您想要的想法主題將來解決資料行,或在 Microsoft 知識庫 」 的使用
請為它的表單。

需要更多協助?

擴展您的技能
探索訓練
優先取得新功能
加入 Microsoft 測試人員

這項資訊有幫助嗎?

感謝您的意見反應!

感謝您的意見反應! 我們將協助您與我們的其中一個 Office 支援專員連絡以深入了解您的意見。

×