1. 程式人生 > >token初瞭解

token初瞭解

Token是什麼?

Token是服務端生成的一串字串,以作客戶端進行請求的一個令牌,當第一次登入後,伺服器生成一個Token便將此Token返回給客戶端,以後客戶端只需帶上這個Token前來請求資料即可,無需再次帶上使用者名稱和密碼。

Token的引入——

Token是在客戶端頻繁向服務端請求資料,服務端頻繁的去資料庫查詢使用者名稱和密碼並進行對比,判斷使用者名稱和密碼正確與否,並作出相應提示,在這樣的背景下,Token便應運而生

使用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過期後,客戶端必須重新登入才能進行訪問資料。

git-osc中Session 和 Token的使用 :

不久之前在學習登入時就第一次接觸到了Token,但那個時候還不太清楚是怎麼個情況,現在明白了:

當用戶登入時,伺服器會返回一個Session,在Session中夾有Token,拿到Token後,我們需要將token存起來。
當下次使用者在傳送請求的時候,就不用再攜帶使用者名稱和密碼了,這樣可以減輕伺服器的負擔,只需要攜帶Token和相應請求需要帶的引數即可。