上文《3種web會話管理的方式》介紹了3種會話管理的方式,其中token-based的方式有必要從實現(xiàn)層面了解一下。本文主要介紹這方面的內(nèi)容。上文提到token-based的實現(xiàn)目前有一個開放的標準可用,這個標準就是JWT,從它的官網(wǎng)上也能看到,目前實現(xiàn)了JWT的技術(shù)非常多,基本上涵蓋了所有的語言平臺。本文選擇express和jsonwebtoken基于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)起來才手工加的換行):
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26