對這幾個東西有點凌亂了,今天有時間整理下web
Cookie的誕生算法
因爲HTTP協議是無狀態的,而服務器端的業務必須是要有狀態的。Cookie誕生的最初目的是爲了存儲web中的狀態信息,以方便服務器端使用。好比判斷用戶是不是第一次訪問網站。目前最新的規範是RFC 6265,它是一個由瀏覽器服務器共同協做實現的規範。數據庫
Cookie的處理分爲:json
服務器像客戶端發送cookie後端
瀏覽器將cookie保存瀏覽器
以後每次http請求瀏覽器都會將cookie發送給服務器端緩存
1. 爲何要有session的出現?
答:是因爲網絡中http協議形成的,由於http自己是無狀態協議,這樣,沒法肯定你的本次請求和上次請求是否是你發送的。若是要進行相似論壇登錄相關的操做,就實現不了了。服務器
2. session生成方式?
答:瀏覽器第一次訪問服務器,服務器會建立一個session,而後同時爲該session生成一個惟一的會話的key,也就是sessionid,而後,將sessionid及對應的session分別做爲key和value保存到緩存中,也能夠持久化到數據庫中,而後服務器再把sessionid,以cookie的形式發送給客戶端。這樣瀏覽器下次再訪問時,會直接帶着cookie中的sessionid。而後服務器根據sessionid找到對應的session進行匹配;
還有一種是瀏覽器禁用了cookie或不支持cookie,這種能夠經過URL重寫的方式發到服務器;cookie
簡單來說,用戶訪問的時候說他本身是張三,他騙你怎麼辦? 那就在服務器端保存張三的信息,給他一個id,讓他下次用id訪問。網絡
概念: 訪問資源的令牌
驗證流程:
把用戶的用戶名和密碼發到後端
後端進行校驗,校驗成功會生成token, 把token發送給客戶端
客戶端本身保存token, 再次請求就要在Http協議的請求頭中帶着token去訪問服務端,和在服務端保存的token信息進行比對校驗。
特色:
客戶端每次都要攜帶token, 客戶端的內容比較多
概念: JSON WEB TOKEN 的簡寫。可使用在RESTFUL接口定義, 也可使用在普通的web
組成:
header
在header中聲明一些信息
payload、
簽證
驗證流程:
在頭部信息中聲明加密算法和常量, 而後把header使用json轉化爲字符串
在載荷中聲明用戶信息,同時還有一些其餘的內容;再次使用json 把載荷部分進行轉化,轉化爲字符串
使用在header中聲明的加密算法和每一個項目隨機生成的secret來進行加密, 把第一步分字符串和第二部分的字符串進行加密, 生成新的字符串。詞字符串是獨一無二的。
解密的時候,只要客戶端帶着JWT來發起請求,服務端就直接使用secret進行解密。
特色:
三部分組成,每一部分都進行字符串的轉化
解密的時候沒有使用數據庫,僅僅使用的是secret進行解密。
JWT的secret千萬不能泄密!!!
token和jwt區別
服務端驗證客戶端發來的token信息要進行數據的查詢操做;JWT驗證客戶端發來的token 在服務端使用密鑰校驗就能夠,不用數據庫的查詢。