Token Auth的優(yōu)點
Token機制相對于Cookie機制又有什么好處呢鹅髓?
-
支持跨域訪問: Cookie是不允許垮域訪問的迹辐,這一點對Token機制是不存在的掺栅,
前提是傳輸?shù)挠脩粽J證信息通過HTTP頭傳輸
. -
無狀態(tài)(也稱:服務端可擴展行):Token機制在服務端不需要存儲session信息,因為Token 自身包含了所有登錄用戶的信息霎褐,只需要在客戶端的cookie或本地介質存儲狀態(tài)信息.
- 更適用CDN: 可以通過內容分發(fā)網(wǎng)絡請求你服務端的所有資料(如:javascript观蓄,HTML,圖片等)混移,而你的服務端只要提供API即可.
- 去耦: 不需要綁定到一個特定的身份驗證方案。Token可以在任何地方生成蜘腌,只要在你的API被調用的時候沫屡,你可以進行Token生成調用即可.
- 更適用于移動應用: 當你的客戶端是一個原生平臺(iOS, Android饵隙,Windows 8等)時撮珠,Cookie是不被支持的(你需要通過Cookie容器進行處理),這時采用Token認證機制就會簡單得多。
- CSRF:因為不再依賴于Cookie芯急,所以你就不需要考慮對CSRF(跨站請求偽造)的防范勺届。
-
性能: 一次網(wǎng)絡往返時間(通過數(shù)據(jù)庫查詢session信息)總比做一次HMACSHA256計算 的Token驗證和解析要費時得多.
- 不需要為登錄頁面做特殊處理: 如果你使用Protractor 做功能測試的時候,不再需要為登錄頁面做特殊處理.
-
基于標準化:你的API可以采用標準化的 JSON Web Token (JWT). 這個標準已經(jīng)存在多個后端庫(.NET, Ruby, Java,Python, PHP)和多家公司的支持(如:Firebase,Google, Microsoft).
基于JWT的Token認證機制實現(xiàn)
Token 中只保留關鍵的幾條身份標識信息娶耍,其余都放到數(shù)據(jù)庫里面了免姿,權限控制的時候再撈出。這樣做的好處是榕酒,開發(fā)者可以完全掌控 token胚膊,因為關鍵信息都已經(jīng)是你代碼和數(shù)據(jù)庫中的一部分了,想怎么弄都可以了想鹰。
參考:
http://www.cnblogs.com/xiekeli/p/5607107.html
express-jwt https://github.com/auth0/express-jwt
參考:
https://blog.csdn.net/wabiaozia/article/details/75196787?fps=1&locationNum=6