2 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超7個(gè)贊
對(duì)于 api 來(lái)說(shuō),token 通過(guò) header 傳輸,對(duì)應(yīng)的用戶數(shù)據(jù)放在 redis 里,這樣移動(dòng)端保存 token 比較方便,移動(dòng)端保存 cookie 不是很容易,瀏覽器里還是用 cookie + session 方便,集群中共享 session 不是啥問(wèn)題。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊
在存儲(chǔ)過(guò)等同的情況下,在只是簡(jiǎn)單運(yùn)用上,我只能說(shuō)session與token沒(méi)有本質(zhì)的區(qū)別,二者不都是一串被加密過(guò)的字符串,拿他來(lái)做校驗(yàn)都一樣。
以上,是因?yàn)槟惆裻oken拿來(lái)當(dāng)作用戶是不是當(dāng)事人做這么一個(gè)簡(jiǎn)單的校驗(yàn)的情況下。
當(dāng)然,如果我們拋開(kāi)一些比較極端的操作,token比session也有很大的區(qū)別:
token可以存在任何位置(cookie、local storage)
token比session更容易跨域。
CORS預(yù)檢查時(shí)token比較更簡(jiǎn)單。
token有更多的控制權(quán),比如當(dāng)token過(guò)期時(shí),你可以拿通過(guò)刷新token,讓用戶一直保持有效登錄。
等……其實(shí)如果你只是單純拿著token做一下自己網(wǎng)站內(nèi)用戶登錄檢驗(yàn)的話是無(wú)太多區(qū)別的。
但假如token指的是OAuth Token提供認(rèn)證和授權(quán)這類機(jī)制的話,那么就可以把session甩開(kāi)N條街了,甚至是已經(jīng)完全是兩種不同的概念。
假設(shè)有這么一個(gè)場(chǎng)景,你們用戶在你們網(wǎng)站產(chǎn)生的訂單,而另一家公司是專業(yè)ERP公司;而你的用戶希望他的訂單同時(shí)授權(quán)給這家ERP公司使用的情況下,難道你希望用戶拿在你家網(wǎng)站的用戶名和密碼給這家ERP公司嗎?
這時(shí)候OAuth Token就有意義了,OAuth Token的授權(quán)大概是這樣的:
ERP需要調(diào)用我們提供的登錄界面。
用戶輸入用戶名和密碼后,我們?cè)傧駿RP發(fā)送一個(gè)TOKEN。
ERP拿TOKEN換數(shù)據(jù)。
總之,如果你只是在自己網(wǎng)站內(nèi)部上使用二者沒(méi)有什么太多區(qū)別。而如果你的API是在不同終端上使用,token會(huì)更方便。
- 2 回答
- 0 關(guān)注
- 2197 瀏覽
添加回答
舉報(bào)