RESTful 具體含義請去搜索 ,意味着我們的服務是無狀態的,每次調用完全無關的
那麼我們怎麼保證身份驗證呢?
一般這類服務都是提供給別人調用(一般是 第三方系統 ),或者叫做應用程序編程接口 (api) 隨便叫吧,就這麼個意思
假如我有一個服務地址爲 www.a.com/aservice/
提供給別人的登錄名 爲 system1 密碼 爲 abedeffffff
1---提供簽到服務(相當於登錄,這裏的傳輸安全問題未考慮)(因爲這裏使用 用戶名和密碼 + ip驗證,可以暫時不考慮傳輸安全,暫時這樣吧,沒考慮到好的方式)
比如 www.a.com/signinService 如果簽到成功 返回加密字符串(推薦 使用 用戶名 對 訪問者ip 進行 對稱加密),成功之後可以將用戶名和 時間戳放到cache中
簽到服務 主要做以下內容
1) 根據用戶傳遞的用戶名和密碼,驗證 是否正確,(同時服務中判斷 是否允許此用戶在此ip訪問)
2)如果正確,則返回 使用用戶名 對 允許的ip(多個以‘,’ 分割) + 時間戳 進行對稱加密的結果 成功之後可以將用戶名和 時間戳放到cache中
3) 之後所有服務則使用此 加密結果進行
2---當用戶簽到之後開始調用相關服務 使用 用戶名 和 簽到的加密字符串
在服務中獲取用戶傳遞過來的加密字符串,使用 用戶名 對其進行解密,得到 的ip 和 此次訪問服務的ip 進行對比(這裏不每次都查詢數據,因爲效率效率問題暫時想到這種對比方式),如果包含 此次訪問的ip即通過,否則不合法,如果限制訪問頻率, 可以對 解密出來得到的 時間戳 和緩存時間戳 進行對比,限制時間差距後更新cache 的時間戳