NodeJs: session與token

????????cookie是瀏覽器在電腦硬盤中開辟的一塊空間。cookie中的數(shù)據(jù)是有過期時間的,超過時間數(shù)據(jù)會被瀏覽器自動刪除。cookie中的數(shù)據(jù)會隨著請求被自動發(fā)送到服務器端。session實際上就是一個對象,存儲在服務端的內(nèi)存中,在session對象中也可以存儲多條數(shù)據(jù),每一條數(shù)據(jù)都有一個sessionid作為唯一標識。


? ? ? ? 會在客戶端與服務端間來回傳遞也是cookie區(qū)別與sessionStorage和localStorage的一大特點。sessionStorage是會話期間的存儲機制,僅在當前瀏覽器窗口關閉前有效,無法持久保持。localStorage是持久性存儲機制,它始終有效,窗口或瀏覽器關閉也一直保存。cookie只在設置的cookie過期時間之前一直有效。

session的缺點:

? ? ? ? 1、需要保證是同一臺服務器,不能更換服務器(通俗的解釋就是一人一半密碼,一半在服務器,一半在cookie中,如果能對上,就代表登錄過。那么就顯然要保證是請求同一臺服務器,因為你請求另一臺服務器,另一臺服務器中顯然沒有另一半密碼,無法配對)。

? ? ? ? 2、要保證cookie可以設置,但跨域以后cookie不能設置,所以需要解決跨域問題

? ? ? ? 3、容易被偽造

? ? ? ? token很好的的解決了session的這些缺點。token是在服務端產(chǎn)生的,如果前端使用用戶名/密碼向服務端請求認證,服務端認證成功,那么在服務端會返回token給前端。前端可以在每次請求的時候帶上token證明自己的合法地位。token完全由應用管理,因此它可以避開同源策略。token可以在多個服務器間共享。

token驗證登錄:

? ? ? ? 三段式加密字符串:aaaaaaaaaaaaaaaaaaa.bbbbbbbbbbbbbbbbbbbbbbb.ccccccccc:

? ? ? ? ? ? ? ? 第一段:頭,簽證:安全信息驗證,進行不可逆加密

? ? ? ? ? ? ? ? 第二段:你要保存的信息:base64加密后截取內(nèi)容

? ? ? ? ? ? ? ? 第三段:額外信息:不可逆加密

這一段字符串由后端發(fā)給前端。在登錄過以后,生成一個token給到前端,前端保存這個token,如果前端需要登錄后查看的頁面,或者登錄后發(fā)送的請求,只要把token帶回來,服務端解密。如果能正常解密并且沒有過期,就表示正常登錄過。如果解密完過期了,就代表已經(jīng)過期了。如果解密不出來,就代表token是偽造的。

比如一個購物車頁面:

? ? ? ? 前端發(fā)送請求請求用戶的購物車數(shù)據(jù),要求登錄后查看,把token放在請求頭里面帶過去。服務端接收請求,查看請求頭里面有沒有token,如果沒有,則拒絕請求。如果有token就對其進行解析,如果過期了或者無效則拒絕請求。如果解密token沒有問題,那么繼續(xù)向后進入路由,準備購物車的數(shù)據(jù)并返回。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容