了解表單驗證票證和 Cookie

文章翻譯 文章翻譯
文章編號: 910443 - 檢視此文章適用的產品。
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 到期和票證 expirationrelated?
  • 如何依票證的內容中的滑動到期工作和表單驗證 cookie?
  • 是可設定的表單 authenticationcookie 和表單驗證票證的逾時屬性?
  • 問題分析藍本: 表單驗證的可能時間 outbefore 在 configurationfile 中設定的逾時屬性值

表單驗證票證,表單驗證 cookie 是什麼?Arethey 相關的方式?

表單驗證 cookie 是只表單驗證票證的容器。票證會為每個要求的表單驗證 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 應用程式。因此,票證是表單驗證安全性建置區塊。

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

如果 Web 伺服陣列中部署應用程式,您必須確定每個伺服器上的設定檔案共用中validationKeydecryptionKey屬性相同的值<machineKey></machineKey>標記,分別用來雜湊和解密票證。您必須執行這項操作,因為您無法保證哪個伺服器將會處理後續的要求。如需有關FormsAuthenticationTicket加密和 Web 伺服陣列部署考量的詳細資訊,請造訪下列 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/ms998288.aspx
逐一檢查要以手動方式產生金鑰的方法,請參閱下列 「 Microsoft 知識庫 」 文件:
312906 如何使用表單驗證中使用視覺化 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 表單驗證,如果關閉瀏覽器,票證將會遺失,而且會在下一個要求產生新的票證。

如何運作滑動期限在內容 offorms 驗證票證和表單驗證 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。

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

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

是可設定表單驗證 cookieand 表單驗證票證逾時值?

[唯一] 設定,可讓您在 Web.config 檔或 Machine.config 檔,是在<forms></forms>標記。這項變更將會決定在內容中的表單驗證票證的 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

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

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

相關的連結

910439 表單驗證的疑難排解
891032 ASP.NET 的疑難排解
301240 如何在 ASP.NET 應用程式中實作表單型驗證,使用 C#.NET
308157 如何使用 Visual Basic.NET,在 ASP.NET 應用程式中實作表單型驗證
我希望您會發現這項資訊很有幫助簡化處理 ASP.NET 表單驗證票證和 cookie 的困惑。請記住,Support Voice 資料欄是您!如往常,可用來送出您想要的想法主題的感覺將來解決資料行,或在 Microsoft 知識庫 」 的使用 它要求 表單。

屬性

文章編號: 910443 - 上次校閱: 2013年9月21日 - 版次: 2.0
這篇文章中的資訊適用於:
  • Microsoft ASP.NET 2.0
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
關鍵字:?
kbhowto kbasp kbmt KB910443 KbMtzh
機器翻譯
請注意--重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,且可能由 Microsoft Community 利用 Community Translation Framework技術或人工進行事後編修。翻譯過程並無專業譯者參與。Microsoft 同時提供使用者人為翻譯、機器翻譯及社群編修後的機器翻譯三種版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,所有翻譯文章都可能不盡完美,內容都可能出現詞彙、語意或文法上的錯誤。就翻譯內容之不正確或錯誤,或客戶因使用翻譯內容所產生的任何損害,微軟不負擔任何責任。Microsoft將依合理的商業努力不斷地更新機器翻譯軟體和工具,以期能為使用者提供更好的服務。
按一下這裡查看此文章的英文版本:910443
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com