設計適配多端的API接口及JWT在token驗證中的應用


隨着移動互聯網業務的興起與發展,對我們的系統提出了更高的要求:需要我們的系統適配不同端(PC,Android,IOS)的資源請求。

而這也是現在技術更新的一個趨勢:前后端徹底分離的要求,nodejs的出現使得先后端分離的更徹底,傳統意義的后台server只需要提供接口數據給前台browser

前台browser利用各種前台mvvm框架實現其紛繁復雜的各種個性化效果,這樣使得前后台只能划分更明確,開發效率更高,實現更好的前后台工程化管理。

目前大多采用RESTful的規范作為借口設計的指南,該規范最大的特點就是:無狀態,使用uri標識資源。關於RESTful API的相關知識推薦一個好資源:RESTful架構風格概述

做過微信開發的都知道,微信支付的時候首先要請求一個接口返回access_token和expires_in,這樣做的目的是為了做用戶校驗,保證安全性。

如果我們自己要開發一套多端適配的RESTful API我們怎么去設計呢?這個問題一直在困擾我,如何保證安全性,我的RESTful API雖是無狀態請求,但是不能安全暴露在互聯網中,這樣一來安全性沒有保障(惡意數據注入,刪除等),二來如何識別非我方接入系統的請求並拒絕(占用帶寬)

這就需要一套用戶校驗和認證的功能,悉知目前有幾種流行的解決方案:OAuth2和JWT(JSON Web Token)

今天主要看JWT:

JWT 的原理是這樣的:客戶端使用客戶名和密碼去請求服務端的時候,服務端返回一個JSON Web Token,客戶端根據自己端的情況可以保存在cookie或則localstorage中,當客戶端要請求資源uri的時候就在頭部帶上這個JSON Web Token,一般是在 header 的 Authorization 使用 Bearer 的形式,一個包含的 JWT 的請求頭的 Authorization 如下:Authorization: Bearer <token>

 

這樣的API就完美解決了跨域問題,一般在服務端使用redis來管理我們的JSON Web Token,具體實現是:使用redis來保存Token和UUID(用戶唯一標示)的key-value鍵值對,程序中設置管理token的失效。具體的實現參考:RESTful登陸設計(基於Spring及Redis的Token鑒權)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM