保哥有寫過一篇關於 Cookie的文章,裡面有提到
- Persistent Cookie
這種類型的 Cookie 可以設定存在 Browser 一段時間(明確指定 Cookie 的 Expires 時間),如果你設定的時間夠長(例如:一天),即便 Browser 全部關閉或重開機後再開啟也還會存在。
例如以下程式:
[code:c#]
Response.Cookies["Email"].Value = TextBox1.Text; Response.Cookies["Email"].Expires = DateTime.Now.AddDays(1);
[/code]
所以你把cookie的時間設長一點,也都會是登入狀態
登入的session,不單是客戶端的cookies session需長期有效,
而且要配合 server 端 APP 上的 session 也是有效的。
通常是在 server 端的 session 來決定某個 client 是否是已有效的登入。
而怎麼確認 client 是否屬某個 server 的 session,
則是透過 存在 瀏覽器裡的 cookies 裡的值來決定,
而這 cookies 的值就是存 server 端的 session ID。
所以你所想要的長時間保持登入,
就牽涉到 server 端的 session 的長期有效,
以及瀏覽器上所相對應的 cookie 也是長期有效。
瀏覽器上的cookies有效,只要把有效時間拉長就可實現。
而server 端上的長期有效,可能會根據不同的框架或應用程式,
而有所不同。
有些web AP有各自的 session 的預設作法,需了解可怎麼做,
而有些web AP,可以將 session 寫到 DB裡,或者寫到 redis 之類的 NoSQL 裡,
就算重開機後,這些session也都會在,也會根據其所設定的有效期限,
在到期的時候消失或無效。
所以想建置網頁保持登入一個月不登出,
要考慮上述 瀏覽器端 以及 server 端的兩邊配合,才會有作用。