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

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

api 使用session替代token 的利弊在哪?

api 使用session替代token 的利弊在哪?

API
拉風的咖菲貓 2018-10-03 21:22:56
補充:幾種常用的驗證機制最近寫app的api,使用laravel 框架的session替代了傳統的存貯到數據庫的token作為校驗登錄用戶的方法!以下是我們目前的做法登錄后后臺生產session,會往返回信息head頭里寫一個set_cookieios和安卓 會從head頭里得到拿到這個cookie的東西然后再請求需要登錄的地方的時候,ios和安卓會把cookie放到head頭里,讓框架完成自我的校驗ps:有人說不安全有人說不好管理有人說性能問題有誰具體研究過,請幫我分析分析其利弊我個人認為的觀點:說session不安全的,感覺有點牽強,假如真的一點不安全的話,那網站也就完全被暴露了,而且laravel的session也是有自己加密的方式,不是直接暴露的!有人說不好管理,放在redis里了,我不太知道不好管理在哪里。性能問題,session可以存貯的位置有很多,mysql,文件,redis,我覺得性能也不是問題。我也不知其弊端在哪里,有誰具體研究過,請幫我分析分析其利弊也請大家有想法的各抒己見,我們一起討論下
查看完整描述

2 回答

?
慕田峪9158850

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

對于 api 來說,token 通過 header 傳輸,對應的用戶數據放在 redis 里,這樣移動端保存 token 比較方便,移動端保存 cookie 不是很容易,瀏覽器里還是用 cookie + session 方便,集群中共享 session 不是啥問題。

查看完整回答
反對 回復 2018-10-14
?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

在存儲過等同的情況下,在只是簡單運用上,我只能說session與token沒有本質的區別,二者不都是一串被加密過的字符串,拿他來做校驗都一樣。

以上,是因為你把token拿來當作用戶是不是當事人做這么一個簡單的校驗的情況下。

當然,如果我們拋開一些比較極端的操作,token比session也有很大的區別:

  • token可以存在任何位置(cookie、local storage)

  • token比session更容易跨域。

  • CORS預檢查時token比較更簡單。

  • token有更多的控制權,比如當token過期時,你可以拿通過刷新token,讓用戶一直保持有效登錄。

等……其實如果你只是單純拿著token做一下自己網站內用戶登錄檢驗的話是無太多區別的。

但假如token指的是OAuth Token提供認證和授權這類機制的話,那么就可以把session甩開N條街了,甚至是已經完全是兩種不同的概念。

假設有這么一個場景,你們用戶在你們網站產生的訂單,而另一家公司是專業ERP公司;而你的用戶希望他的訂單同時授權給這家ERP公司使用的情況下,難道你希望用戶拿在你家網站的用戶名和密碼給這家ERP公司嗎?

這時候OAuth Token就有意義了,OAuth Token的授權大概是這樣的:

  • ERP需要調用我們提供的登錄界面。

  • 用戶輸入用戶名和密碼后,我們再向ERP發送一個TOKEN。

  • ERP拿TOKEN換數據。

總之,如果你只是在自己網站內部上使用二者沒有什么太多區別。而如果你的API是在不同終端上使用,token會更方便。


查看完整回答
反對 回復 2018-10-14
  • 2 回答
  • 0 關注
  • 2199 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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