參考了很多文章總結的。
1、cookie(儲存在用戶本地終端上的數據)
服務器生成,發送給瀏覽器,瀏覽器保存,下次請求同一網站再發送給服務器。
2、session(會話)
a、代表服務器與瀏覽器的一次會話過程,這個過程是連續的,也可以時斷時續的。
b、cookie中存放着一個sessionID。請求時會發送這個ID。
c、session因為請求(request對象)而產生。
d、session是一個容器,可以存放會話過程中的任何對象。
e、session的創建和使用總在服務端,而瀏覽器從來都沒得到過session對象。
f、Session 是一種HTTP存儲機制,目的是為無狀態的HTTP提供的持久機制。
3、token(“令牌”)
是用戶身份的驗證方式,最簡單的token組成:uid(用戶唯一的身份標識)、time(當前時間的時間戳)、sign(簽名)。
4、cookie與session
a、cookie數據存放在客戶端上,session數據放在服務器上。
b、cookie不是很安全,且保存數據有限。
c、session一定時間內保存在服務器上。當訪問增多,占用服務器性能
5、session與token
作為身份認證 token安全性比session好
App通常用restful api跟server打交道。Rest是stateless的,也就是app不需要像browser那樣用cookie來保存session,因此用session token來標示自己就夠了,session/state由api server的邏輯處理。 如果你的后端不是stateless的rest api, 那么你可能需要在app里保存session.可以在app里嵌入webkit,用一個隱藏的browser來管理cookie session.
Session 認證只是簡單的把User 信息存儲到Session 里,因為SID 的不可預測性,暫且認為是安全的。這是一種認證手段。 而Token ,如果指的是OAuth Token 或類似的機制的話,提供的是 認證 和 授權 ,認證是針對用戶,授權是針對App 。其目的是讓 某App有權利訪問 某用戶 的信息。這里的 Token是唯一的。不可以轉移到其它 App上,也不可以轉到其它 用戶 上。 轉過來說Session 。Session只提供一種簡單的認證,即有此 SID,即認為有此 User的全部權利。是需要嚴格保密的,這個數據應該只保存在站方,不應該共享給其它網站或者第三方App。 所以簡單來說,如果你的用戶數據可能需要和第三方共享,或者允許第三方調用 API 接口,用 Token 。如果永遠只是自己的網站,自己的 App,用什么就無所謂了。
我的理解:
cookie存在瀏覽器,不安全;
session存在服務器,可能影響性能;
token身份認證安全性好,是唯一的。
若存在第三方,用token,不用session。
