Token無狀態(tài)登錄驗證

附件下載:Token無狀態(tài)登錄驗證.zip

傳統(tǒng)的web端登錄巢价,是將登錄信息緩存到服務(wù)端的session中出革,每個session有一個唯一的sessionId贝或。瀏覽器請求服務(wù)端會自動在請求頭的cookie中帶上sessionId,一般開發(fā)的時候?qū)essionId是無感知的泼诱。而token的本質(zhì)是一段加密的字符串坛掠,包含了登錄用戶的信息

token登錄驗證序列圖

token登錄序列圖.png

為什么使用token

相比session而言,token有以下幾點優(yōu)勢

  1. 服務(wù)端不需要緩存用戶信息治筒,減少服務(wù)器壓力
  2. token緩存在客戶端屉栓,服務(wù)器重啟,登錄狀態(tài)不會失效
  3. session是瀏覽器特有的耸袜,app要支持會比較繁瑣友多,token就沒有這樣的限制
  4. 易于擴展,存在多臺服務(wù)器的情況下堤框,使用負載均衡域滥,第一次登錄請求轉(zhuǎn)發(fā)到A服務(wù)器,在A服務(wù)器的session中緩存了用戶的登錄信息蜈抓,如果第二次請求轉(zhuǎn)發(fā)到了B服務(wù)器启绰,就丟失了登錄狀態(tài)。雖然可以使用redis等手段共享session沟使,但token就簡單很多委可,不同的服務(wù)器只需要使用相同的一段解密代碼即可

java生成token方法

JWT(JSON Web Token)

網(wǎng)上找到的大部分資料都是使用JWT來生成token,JWT生成的token包含三部分

  1. header:包含token類型和加密算法
  2. payload:存放自定義數(shù)據(jù)
  3. signature:對前面兩部分的簽名格带,防止篡改數(shù)據(jù)\r\n\r\n用JWT生成的token是很長的一串字符串撤缴,用Base64進行編碼,可以解碼出原數(shù)據(jù)叽唱,注意不能放一些私密信息屈呕,比如用戶密碼
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\r\n.eyJleHBpcmVUaW1lIjoxNTQ5NTU0NDUyLCJ1c2VyTmFtZSI6IuacveacqCIsInVzZXJJZCI6IjY2NiJ9\r\n.fiQKWuMTWbkfQ3dOozoJr13pJSmKnc5El4EBnKyU42o

上面這很長的一串就是用JWT生成的token,可以感受一下這個長度棺亭』⒄#客戶端的每次請求都要帶上這么一大串,服務(wù)端的每次響應(yīng)都要返回這么一大串镶摘,我個人是難以接受的嗽桩。所以我用了下面那種方法

AES(Advanced Encryption Standard)

token本質(zhì)是一段加密的字符串,包含登錄用戶的一些信息凄敢,通過解密可以獲取這些信息碌冶,所以理論上任何安全的加密解密手段都可以用來生成token
高級加密標準AES,在密碼學(xué)中又稱Rijndael加密法涝缝,是美國聯(lián)邦政府采用的一種區(qū)塊加密標準扑庞。AES采用對稱加密譬重,相比于非對稱加密,對稱加密效率更快

  • 對稱加密:加密和解密使用相同的密鑰罐氨。適用于單方面的加密解密臀规,密鑰不能泄露
  • 非對稱加密:使用公鑰加密,私鑰解密栅隐。適用于一方加密塔嬉,另一方解密,比如前后端的數(shù)據(jù)傳輸租悄,可以在客戶端使用公鑰對數(shù)據(jù)進行加密谨究,在服務(wù)端使用密鑰進行解密,增強數(shù)據(jù)安全性
    token的加密解密都在服務(wù)端進行泣棋,所以使用對稱加密的AES算法即可
EmaZUvyM9aabQ2Jmo6THJ/r3/e2xAjpRmoA5TzvuR4I=

上面這一小串就是用AES生成的token了记盒,是不是清爽了很多,而且沒有密鑰無法解密外傅,相比JWT生成的token,AES生成的token攜帶的數(shù)據(jù)更安全

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末俩檬,一起剝皮案震驚了整個濱河市萎胰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌棚辽,老刑警劉巖技竟,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異屈藐,居然都是意外死亡榔组,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門联逻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來搓扯,“玉大人,你說我怎么就攤上這事包归∠峭疲” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵公壤,是天一觀的道長换可。 經(jīng)常有香客問我,道長厦幅,這世上最難降的妖魔是什么沾鳄? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮确憨,結(jié)果婚禮上译荞,老公的妹妹穿的比我還像新娘瓤的。我一直安慰自己,他們只是感情好磁椒,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布堤瘤。 她就那樣靜靜地躺著,像睡著了一般浆熔。 火紅的嫁衣襯著肌膚如雪本辐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天医增,我揣著相機與錄音慎皱,去河邊找鬼。 笑死叶骨,一個胖子當著我的面吹牛茫多,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播忽刽,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼天揖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了跪帝?” 一聲冷哼從身側(cè)響起今膊,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伞剑,沒想到半個月后斑唬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡黎泣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年恕刘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抒倚。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡褐着,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出托呕,到底是詐尸還是另有隱情献起,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布镣陕,位于F島的核電站谴餐,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏呆抑。R本人自食惡果不足惜岂嗓,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鹊碍。 院中可真熱鬧厌殉,春花似錦食绿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至楼眷,卻和暖如春铲汪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背罐柳。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工掌腰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人张吉。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓齿梁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肮蛹。 傳聞我的和親對象是個殘疾皇子勺择,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容