cookie和session實現免登陸

2021-08-28 23:33:16 字數 2415 閱讀 8686

cookie的機制

cookie是瀏覽器(user agent)訪問一些**後,這些**存放在客戶端的一組資料,用於使**等跟蹤使用者,實現使用者自定義功能。

cookie的domain和path屬性標識了這個cookie是哪乙個**傳送給瀏覽器的;cookie的expires屬性標識了cookie的有 效時間,當cookie的有效時間過了之後,這些資料就被自動刪除了。

如果不設定過期時間,則表示這個cookie生命週期為瀏覽器會話期間,只要關閉瀏覽器視窗,cookie就消失了。這種生命期為瀏覽會話期的 cookie被稱為會話cookie。會話cookie一般不儲存在硬碟上而是儲存在記憶體裡。如果設定了過期時間,瀏覽器就會把cookie儲存到硬碟 上,關閉後再次開啟瀏覽器,這些cookie依然有效直到超過設定的過期時間。儲存在硬碟上的cookie可以在不同的瀏覽器程序間共享,比如兩個ie窗 口。而對於儲存在記憶體的cookie,不同的瀏覽器有不同的處理方式。

session的機制

session是存放在伺服器端的類似於hashtable結構(每一種web開發技術的實現可能不一樣,下文直接稱之為hashtable)來存放使用者 資料,當瀏覽器第一次傳送請求時,伺服器自動生成了乙個hashtable和乙個session id用來唯一標識這個hashtable,並將其通過響應傳送到瀏覽器。當瀏覽器第二次傳送請求,會將前一次伺服器響應中的session id放在請求中一併發送到伺服器上,伺服器從請求中提取出session id,並和儲存的所有session id進行對比,找到這個使用者對應的hashtable。

一般情況下,伺服器會在一定時間內(預設20分鐘)儲存這個hashtable,過了時間限制,就會銷毀這個hashtable。在銷毀之前,程式設計師可以 將使用者的一些資料以key和value的形式暫時存放在這個hashtable中。當然,也有使用資料庫將這個hashtable序列化後儲存起來的,這 樣的好處是沒了時間的限制,壞處是隨著時間的增加,這個資料庫會急速膨脹,特別是訪問量增加的時候。一般還是採取前一種方式,以減輕伺服器壓力。

cookie和session的區別:

cookie

session

儲存位置

瀏覽器

伺服器

瀏覽器攜帶的資料量

少(只攜帶session-id

儲存的資料型別

只能是字串

任意型別

安全性

較低

較高

預設的有效路徑

當前目錄及其子目錄

整站有效

資料的傳輸量

有限制4k,不能超過20

無限制

一些**的3天免登陸是如何做到的?

方式一:首先想到的是使用cookie儲存使用者登入資訊,設定有效期,在使用者下次訪問時免去登入環節,直接通過cookie獲取使用者資訊。

方式二:直接將session會話儲存,使用者下次訪問時,繼續使用這個session。

相比之下session顯得更加安全,但是,大家知道,session會隨著瀏覽器的關閉而消失(確切的說,是在客戶端消失,伺服器端的session存活週期取決於相應配置),當使用者下次啟動瀏覽器,訪問**時,又會得到由**自動分配的新的session。那麼,問題來了:

如何做到關閉瀏覽器後到下次登入時session仍然有效?

思路:1、在使用者登入成功時,建立session物件,儲存使用者資訊

2、將此session的sessionid儲存到cookie中

3、同時將sessionid於session對應關係儲存到應用域中,以便後面可以根據sessionid來獲取到session

4、在使用者關閉瀏覽器,重新開啟瀏覽器訪問**時,讀取使用者的cookie,得到sessionid

5、根據sessionid獲取到第3步儲存到應用域中的session物件

6、從session中讀取使用者資訊

cookie和session和token是什麼?

什麼是session?什麼是cookie?什麼是token?1 cookie?由於http是一種無狀態協議,伺服器沒有辦法單單從網路連線上面知道訪問者的身份,為了解決這個問題,就誕生了cookie cookie實際上是一小段的4k文字資訊。客戶端請求伺服器,如果伺服器需要記錄該使用者狀態,就使用re...

Session和Cookie的區別

session和cookie的區別 1 儲存的位置不同 session儲存在伺服器端的記憶體中,占用伺服器資源。cookie是儲存在客戶端。可以是瀏覽器中或者是檔案中 2 儲存的時間不同 session是關閉當前會話相關瀏覽器後自動清空。cookie是根據過期時間而會有不同。3 安全性不同 sess...

cookie和session的區別

一 cookie機制和session機制的區別 具體來說cookie機制採用的是在客戶端保持狀態的方案,而session機制採用的是在伺服器端保持狀態的方案。同時我們也看到,由於在伺服器端保持狀態的方案在客戶端也需要儲存乙個標識,所以session機制可能需要借助於cookie機制來達到儲存標識的目...