2012-06-15 70 views
0

看起來從msdn(註釋在頁面底部),如果您設置HttpCookie的Expires屬性,它將成爲存儲在臨時Internet文件夾中的持久cookie。如果我想讓它保持一個會話cookie(這意味着當您關閉瀏覽器時,它已經消失),但是仍然要設置到期時間,比如30分鐘,該怎麼辦?當您使用ASP.NET Membership API時,您可以在web.config中設置會話cookie(認證cookie)的到期時間,這意味着必須有一種方法來設置會話cookie的到期時間。ASP.NET:如何設置HttpCookie過期時間,而它仍然是一個會話cookie?

+0

如果你想要的是一個會話cookie ...你爲什麼要設置到期日期?您應該在您的示例中執行的操作是在特定時間後終止用戶會話,並且Cookie也將過期。 –

+0

@Ricardo:讓我們說用戶登錄到網上銀行,它應該在登錄後的30分鐘內超時,但用戶一整天都不關閉瀏覽器,那麼會話cookie不會在一整天內過期!我如何最好地處理這個問題? – Aperture

+0

這個答案可能有幫助:http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes –

回答

2

考慮到您的要求我會說,除非你有一個非常強有力的理由來使用cookies,您應該使用Session對象。

如果您沒有在這個cookie上存儲「大量」信息和/或預計用戶數量不會很多,這似乎是最好的選擇。

1

你有沒有嘗試過這樣的事情:

this.Response.Cookies["d"].Expires = DateTime.Now.AddMinutes(30); 
+0

如果你這樣做,該cookie將成爲一個永久性的cookie在temp internet文件夾中找到。 – Aperture

+0

@光圈那麼?你爲什麼試圖避免瀏覽器實現細節? – vcsjones

+1

只有當您設置「過期」屬性時,纔會持續存在Cookie,因此只有持久性Cookie和tmp Cookie。你能解釋一下:你爲什麼要嘗試完成什麼** ** – Jupaol

1

你也許可以添加另一個cookie(也是一個會話cookie),它包含一個DateTime,告訴你的應用程序第一個cookie有效的時間。然後,每當您的應用程序讀取第一個cookie時,它也會檢查新的cookie以查看它是否仍然有效。

我認爲這或多或少是會員如何操作的。儘管在這種情況下只有一個cookie,但該cookie包含幾個字段(信息片段)。

相關問題