上文《3種web會話管理的方式》介紹了3種會話管理的方式,其中token-based的方式有必要從實現(xiàn)層面了解一下。本文主要介紹這方面的內(nèi)容。上文提到token-based的實現(xiàn)目前有一個開放的標準可用,這個標準就是JWT,從它的官網(wǎng)上也能看到,目前實現(xiàn)了JWT的技術(shù)非常多,基本上涵蓋了所有的語言平臺。本文選擇expressjsonwebtoken基于nodejs來實現(xiàn)token-based會話管理。

相關(guān)代碼:https://github.com/liuyunzhuge/blog/tree/master/node_jwt

demo的說明我會在本文第二部分介紹,下面先介紹一下JWT的相關(guān)知識。

認識JWT

JSON Web Token(JWT)是一個開放標準(RFC 7519),它定義了一種緊湊和自包含的方式,用于在各方之間作為JSON對象安全地傳輸信息。作為標準,它沒有提供技術(shù)實現(xiàn),但是大部分的語言平臺都有按照它規(guī)定的內(nèi)容提供了自己的技術(shù)實現(xiàn),所以實際在用的時候,只要根據(jù)自己當前項目的技術(shù)平臺,到官網(wǎng)上選用合適的實現(xiàn)庫即可。

使用JWT來傳輸數(shù)據(jù),實際上傳輸?shù)氖且粋€字符串,這個字符串就是所謂的json web token字符串。所以廣義上,JWT是一個標準的名稱;狹義上,JWT指的就是用來傳遞的那個token字符串。這個串有兩個特點: 
1)緊湊:指的是這個串很小,能通過url 參數(shù),http 請求提交的數(shù)據(jù)以及http header的方式來傳遞; 
2)自包含:這個串可以包含很多信息,比如用戶的id、角色等,別人拿到這個串,就能拿到這些關(guān)鍵的業(yè)務(wù)信息,從而避免再通過數(shù)據(jù)庫查詢等方式才能得到它們。

通常一個JWT是長這個樣子的(這個串本來是不會換行的,為了讓這個串看起來的樣子跟后面要介紹的數(shù)據(jù)結(jié)構(gòu)對應(yīng)起來才手工加的換行):

image 

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設(shè)計培訓,網(wǎng)站建設(shè)培訓學習是年輕人改變自己的最好方式