客戶端登入新增token機制
阿新 • • 發佈:2019-01-06
手機APP登入的時候傳送使用者名稱和密碼到伺服器,伺服器驗證使用者名稱和密碼,
如果成功,以某種方式比如隨機生成32位的字串作為token,儲存到伺服器中(建立Table),
並返回token到客戶端,以後客戶端再請求時,驗證該token就可以了。將客戶端儲存的token與伺服器儲存的token比對,然後伺服器端驗證token,成功返回所需要的結果,失敗返回錯誤資訊,讓其重新登入。
如何有什麼不合理的地方,還請指出!
如果成功,以某種方式比如隨機生成32位的字串作為token,儲存到伺服器中(建立Table),
並返回token到客戶端,以後客戶端再請求時,驗證該token就可以了。將客戶端儲存的token與伺服器儲存的token比對,然後伺服器端驗證token,成功返回所需要的結果,失敗返回錯誤資訊,讓其重新登入。
其中伺服器上token設定一個有效期,每次客戶端請求的時候都驗證token和有效期。
這裡,儲存在客戶端的token存在哪裡?
本人分析了android儲存資料的五種方式,
有兩種可選:
1、使用sharedPreferences儲存token。sharedPreferences可用於儲存少量資料,應用程式的各種配置資訊以及口令密碼等,而且我們的使用者名稱也儲存在這裡(本專案使用)。
2、sqlite。需要建立資料庫、表等。
最終選擇了方法1。
就本專案來說,在登入的相關部分加上
String jsonDatas = msg.obj.toString().trim();
Gson gson = USAUtil.getGson();
TokenUtils accesstoken = gson.fromJson(jsonDatas,TokenUtils.class );
用於解析token,其中TokenUtils是set、get方法的工具類。
然後再儲存token到sharedPreferences就可以了,
具體的實現就不多說了。saveAccessToken(XXX.this, accesstoken.getToken());
如何有什麼不合理的地方,還請指出!