天天看點

什麼是token

對于初學者來說,對Token和Session的使用難免會限于困境,開發過程中知道有這個東西,但卻不知道為什麼要用他?更不知道其原理,今天我就帶大家一起分析分析這東西。

    一、我們先解釋一下他的含義:

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

2、Token的定義:Token是服務端生成的一串字元串,以作用戶端進行請求的一個令牌,當第一次登入後,伺服器生成一個Token便将此Token傳回給用戶端,以後用戶端隻需帶上這個Token前來請求資料即可,無需再次帶上使用者名和密碼。

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

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

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

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

什麼是token
上一篇: 疊代器模式
下一篇: JSON WEB TOKEN

繼續閱讀