ASP.NET2.0 驗證cookie詳解

來源:互聯網
上載者:User

對於ASP.NET Forms驗證,想必大家都非常的熟悉。然而,在控制使用者的(到期時間)expired time的時候,你是否遇到過一些奇怪的現象呢?雖說只是一個小小的cookie,但是其中可能有很多的東西你都不知道。今天我將和大家詳細討論一下cookie的注意點。

在ASP.NET 的Forms驗證中,通常我們會使用ASP.NET內建的Login控制項來進行驗證。同時,在web.config檔案中,我們所有的Forms設定都設為預設。現在,問題就來了。

1) 為什麼我明明點了"Remember me",而大概半個小時後,我又Log out了?

2) 為什麼我明明設定了timeout為無限期 e.g. 400000,為什麼一兩天之後我又Log out了呢?

 

這是Forms驗證中遇到的比較多的問題。下面,我就這兩個問題做一個詳細的解釋:

對於問題一,首先我要闡明ticket和cookie的區別。cookie是一個容器,用來存放東西,它是儲存在用戶端的。而ticket是具體的資料,用來表示具體的驗證資訊,它是放在cookie這個容器中的。因而,在我們驗證的過程中,以下事情發生了。首先,ticket被創造了,裡麵包含著使用者名稱等資訊,同時它有一個到期時間。然後,cookie被創造了,它同樣也有一個到期時間。最後,將ticket儲存在cookie中,並將此cookie發送到client的瀏覽器中。讀到這裡,我想問題已經很明白了,使用者的Log out就是因為時間到期的問題。但具體是誰的時間到期了呢?在我們ASP.NET web.config的設定中,timeout是cookie的到期時間(注意,預設是30分鐘),而ticket的到期時間是無限的,因為我們選了"Remember me"。這就是為什麼雖然我點了"Remember me",但在30分鐘左右後,我仍然被Log out了,因為我們並沒有設定cookie的timeout。ticket和cookie,只要其中之一不是永遠不到期,我們都無法實現永不到期。

當我們解決了問題一後(假如手動設定timeout="4000000"),我們又遇到了問題二。這又是什麼原因呢?這得從ticket的加密解密機制說起。ASP.NET會使用一個machinekey來對cookie進行加密,這個machinekey預設是在application啟動時隨機產生的。然後,ASP.NET會使用同一個machinekey進行cookie進行解密。正式因為這個key是application啟動時隨機產生的才導致了問題二。試想,如果application recycle(重啟)了怎麼辦?ASP.NET會產生另一個key進行解密,以前的cookie將不再有效,這就是問題二的原因了。知道了這個,解決第二個問題的辦法就很簡單了,手動設定一個特定的key。如:

Code
<machineKey validationKey="88CB6CA6CF403C5FBB41C2F62BB7FCFCA05DE7BE" decryptionKey="B8A7CF3816C57176" validation="SHA1" />

 

P.S. 網上也有些隨機產生key的網站,如:http://www.aspnetresources.com/tools/keycreator.aspx.

看到這裡,大家是不是對Forms驗證cookie有新的瞭解呢

Have a nice day!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.