亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為何說 Token 是 restful,而Cookie/SessionID 則不是?

為何說 Token 是 restful,而Cookie/SessionID 則不是?

夢里花落0921 2018-06-27 10:02:42
如果SessionID和Token都存在 redis 里讓多個服務器共享 那沒什么區別吧?關于有無狀態和是否restful他們都需要在服務端保存信息,我覺得都是stateful為何有的說Token就是stateless和restful,而Cookie/SessionID 則不是?
查看完整描述

3 回答

?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

很多人是按session的方式來使用token,所以覺得兩者一樣。

session思維是這樣:傳遞sessionID或者所謂的token到服務端,然后服務端根據這個鍵值找到用戶數據,也許是session文件,也許在redis里,然后讀取里面的數據uid=1,至此用戶身份確立。

而真正的token思維是這樣:uid=1直接保存在客戶端,當然不會只保留這么簡單的數據,很容易偽造。實際保存數據可能是這樣uid=1|6166b2002fdcb5df,后面一部分簽名是根據第一部分數據加密所得,而加密算法只有服務端知道,你就沒辦法偽造數據了。服務端獲取這個token后,對第一部分數據驗簽,和第二部分比對,如果一致,直接確立用戶身份uid=1。整個操作直接在內存中運算,不需要讀取session文件或redis。你甚至可以把整個用戶信息uid=1&nickname=xxx&money=1000保存到token里。

比如常用的JWT,是用 . 分割成3部分,每部分再base64_encode,但思路是一樣的。


查看完整回答
反對 回復 2018-07-21
?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

可以看下jwt這種token,是不需要存在服務器的,所有認證信息(用戶id,過期時間等)是被加密在token當中的,在服務端解密token就可以獲取認證信息,不像session需要在服務器那里,根據cookie來取回狀態。

至于安全問題,jwt+https基本是很安全的了。這種stateless的token還有個好處是他可以無痛拓展,因為session的文件是存放到磁盤上的,當你有第二臺服務器時,為了共享登陸,你不得不把session文件轉移到redis或其他介質上,而jwt本身自帶所有認證信息,直接使用


查看完整回答
反對 回復 2018-07-21
?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

不管token很是session_id原理上都是差不多的,token通常是放在接口直接請求,token通常是放在header中進行請求,不管怎么樣都需要前后端發起數據交互。不管用token還是session,都沒大關系,只要能實現即可。

查看完整回答
反對 回復 2018-07-21
  • 3 回答
  • 0 關注
  • 3055 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號