android的token

Token是服務端生成的一串字符串,

以作客戶端進行請求的一個令牌,
當第一次登錄後,服務器生成一個Token便將此Token返回給客戶端,以後客戶端只需帶上這個Token前來請求數據即可,無需再次帶上用戶名和密碼。

用設備號/設備mac地址作爲Token(推薦)

客戶端:客戶端在登錄的時候獲取設備的設備號/mac地址,並將其作爲參數傳遞到服務端。
服務端:服務端接收到該參數後,便用一個變量來接收同時將其作爲Token保存在數據庫,並將該Token設置到session中,客戶端每次請求的時候都要統一攔截,並將客戶端傳遞的token和服務器端session中的token進行對比,如果相同則放行,不同則拒絕。
分析:此刻客戶端和服務器端就統一了一個唯一的標識Token,而且保證了每一個設備擁有了一個唯一的會話。該方法的缺點是客戶端需要帶設備號/mac地址作爲參數傳遞,而且服務器端還需要保存;優點是客戶端不需重新登錄,只要登錄一次以後一直可以使用,至於超時的問題是有服務器這邊來處理,如何處理?若服務器的Token超時後,服務器只需將客戶端傳遞的Token向數據庫中查詢,同時並賦值給變量Token,如此,Token的超時又重新計時。

用session值作爲Token

客戶端:客戶端只需攜帶用戶名和密碼登陸即可。
客戶端:客戶端接收到用戶名和密碼後並判斷,如果正確了就將本地獲取sessionID作爲Token返回給客戶端,客戶端以後只需帶上請求數據即可。
分析:這種方式使用的好處是方便,不用存儲數據,但是缺點就是當session過期後,客戶端必須重新登錄才能進行訪問數據。

獲取token方法

try {
    String token = GoogleAuthUtil.getToken(this, email,“https://www.googleapis.com/auth/devstorage.read_only”);
    System.out.println(token);
        } catch (IOException e) {
        System.out.println(“IOException”);
    } catch (UserRecoverableAuthException e) {
        System.out.println(“UserRecoverableAuthException”);
    } catch (GoogleAuthException e) {
        System.out.println(“GoogleAuthException”);
    }
發佈了31 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章