用戶端和服務端如何使用Token和Session,tokensession

來源:互聯網
上載者:User

用戶端和服務端如何使用Token和Session,tokensession

一、我們先解釋一下他的含義:
    1、Token的引入:Token是在用戶端頻繁向服務端請求資料,服務端頻繁的去資料庫查詢使用者名稱和密碼並進行對比,判斷使用者名稱和密碼正確與否,並作出相應提示,在這樣的背景下,Token便應運而生。
    2、Token的定義:Token是服務端產生的一串字串,以作用戶端進行請求的一個令牌,當第一次登入後,伺服器產生一個Token便將此Token返回給用戶端,以後用戶端只需帶上這個Token前來請求資料即可,無需再次帶上使用者名稱和密碼。
    3、使用Token的目的:Token的目的是為了減輕伺服器的壓力,減少頻繁的查詢資料庫,使伺服器更加健壯。


二、如何使用Token?
1、用裝置號/裝置mac地址作為Token(推薦)
    用戶端:用戶端在登入的時候擷取裝置的裝置號/mac地址,並將其作為參數傳遞到服務端。
    服務端:服務端接收到該參數後,便用一個變數來接收同時將其作為Token儲存在資料庫,並將該Token設定到session中,用戶端每次請求的時候都要統一攔截,並將用戶端傳遞的token和伺服器端session中的token進行對比,如果相同則允許存取,不同則拒絕。
    分析:此刻用戶端和伺服器端就統一了一個唯一的標識Token,而且保證了每一個裝置擁有了一個唯一的會話。該方法的缺點是用戶端需要帶裝置號/mac地址作為參數傳遞,而且伺服器端還需要儲存;優點是用戶端不需重新登入,只要登入一次以後一直可以使用,至於逾時的問題是有伺服器這邊來處理,如何處理?若伺服器的Token逾時後,伺服器只需將用戶端傳遞的Token向資料庫中查詢,同時並賦值給變數Token,如此,Token的逾時又重新計時。
2、用session值作為Token
    用戶端:用戶端只需攜帶使用者名稱和密碼登陸即可。
    用戶端:用戶端接收到使用者名稱和密碼後並判斷,如果正確了就將本地擷取sessionID作為Token返回給用戶端,用戶端以後只需帶上請求資料即可。
    分析:這種方式使用的好處是方便,不用儲存資料,但是缺點就是當session到期後,用戶端必須重新登入才能進行訪問資料。

 

三、使用過程中出現的問題以及解決方案?

    剛才我們輕鬆介紹了Token的兩種使用方式,但是在使用過程中我們還出現各種問題,Token第一種方法中我們隱藏了一個在網路不好或者並發請求時會導致多次重複提交資料的問題。

    該問題的解決方案:將session和Token套用,如此便可解決,如何套用呢?請看這段解釋:

     這就是解決重複提交的方案。

/** * 使用者登入,將私人token儲存 *  * @param appContext * @param username * @param password * @return GitlabUser使用者資訊 * @throws IOException */public static User login(AppContext appContext, String userEmail,        String password) throws AppException {    String urlString = URLs.LOGIN_HTTPS;    Session session = getHttpRequestor()            .init(appContext, HTTPRequestor.POST_METHOD, urlString)            .with("email", userEmail)            .with("password", password)            .to(Session.class);    // 儲存使用者的私人token    if (session != null && session.get_privateToken() != null) {        String token = CyptoUtils.encode(GITOSC_PRIVATE_TOKEN, session.get_privateToken());        appContext.setProperty(PRIVATE_TOKEN, token);    }    return session;}

  

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.