Security+JWT

Security為Spring自帶的權(quán)限框架怀估,相似的還有shiro损姜。該框架原理為過(guò)濾器攔截請(qǐng)求進(jìn)行處理条获。

用戶(hù)填入用戶(hù)名密碼后忠荞,與數(shù)據(jù)庫(kù)里存儲(chǔ)的用戶(hù)信息進(jìn)行比對(duì),如果通過(guò)帅掘,則認(rèn)證成功委煤。傳統(tǒng)的方法是在認(rèn)證通過(guò)后,創(chuàng)建sesstion修档,并給客戶(hù)端返回cookie碧绞。

現(xiàn)在我們采用JWT來(lái)處理用戶(hù)名密碼的認(rèn)證。區(qū)別在于吱窝,認(rèn)證通過(guò)后讥邻,服務(wù)器生成一個(gè)token,將token返回給客戶(hù)端院峡,客戶(hù)端以后的所有請(qǐng)求都需要在http頭中指定該token兴使。

服務(wù)器接收的請(qǐng)求后,會(huì)對(duì)token的合法性進(jìn)行驗(yàn)證照激。

驗(yàn)證的內(nèi)容包括:內(nèi)容是一個(gè)正確的JWT格式发魄、檢查簽名、檢查claims实抡、檢查權(quán)限欠母、處理登錄

具體實(shí)現(xiàn):

一、框架自帶

在Secrity的配置類(lèi)中,攔截“/login”請(qǐng)求吆寨,並添加兩個(gè)過(guò)濾器

SecurityConfig

創(chuàng)建一個(gè)類(lèi)JWTLoginFilter赏淌,核心功能是在驗(yàn)證用戶(hù)名密碼正確后,生成一個(gè)token啄清,并將token返回給客戶(hù)端:

該類(lèi)繼承自UsernamePasswordAuthenticationFilter六水,重寫(xiě)了其中的2個(gè)方法:

attemptAuthentication :接收并解析用戶(hù)憑證。(該類(lèi)繼承的父類(lèi)默認(rèn)的攔截請(qǐng)求為/login post


接收/login

successfulAuthentication :用戶(hù)成功登錄后辣卒,這個(gè)方法會(huì)被調(diào)用掷贾,我們?cè)谶@個(gè)方法里生成token。用戶(hù)一旦登錄成功后荣茫,會(huì)拿到token想帅,后續(xù)的請(qǐng)求都會(huì)帶著這個(gè)token,服務(wù)端會(huì)驗(yàn)證token的合法性啡莉。

創(chuàng)建Token的方法Jwts.builder()

successfulAuthentication

創(chuàng)建JwtAuthenticationFilter類(lèi)港准,我們?cè)谶@個(gè)類(lèi)中實(shí)現(xiàn)token的校驗(yàn)功能旨剥。

該類(lèi)繼承自BasicAuthenticationFilter,在doFilterInternal方法中浅缸,從http頭的Authorization 項(xiàng)讀取token數(shù)據(jù)轨帜,然后用Jwts包提供的方法校驗(yàn)token的合法性。

解析Token的方法Jwts.parser()

JwtAuthenticationFilter
驗(yàn)證方法

如果校驗(yàn)通過(guò)衩椒,就認(rèn)為這是一個(gè)取得授權(quán)的合法請(qǐng)求蚌父。

二、自定義

在SecurityConfig的白名單中添加自定義的登陸請(qǐng)求

JWTAuthenticationFilter毛萌、JWTLoginFilter就不會(huì)攔截

白名單
自定義接口

三苟弛、Token驗(yàn)證


驗(yàn)證Token請(qǐng)求

請(qǐng)求被Security的JWTAuthenticationFilter攔截

JWTAuthenticationFilter
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市朝聋,隨后出現(xiàn)的幾起案子嗡午,更是在濱河造成了極大的恐慌,老刑警劉巖冀痕,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荔睹,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡言蛇,警方通過(guò)查閱死者的電腦和手機(jī)僻他,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)腊尚,“玉大人吨拗,你說(shuō)我怎么就攤上這事⌒龀猓” “怎么了劝篷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)民宿。 經(jīng)常有香客問(wèn)我娇妓,道長(zhǎng),這世上最難降的妖魔是什么活鹰? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任哈恰,我火速辦了婚禮,結(jié)果婚禮上志群,老公的妹妹穿的比我還像新娘着绷。我一直安慰自己,他們只是感情好锌云,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布荠医。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪子漩。 梳的紋絲不亂的頭發(fā)上豫喧,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音幢泼,去河邊找鬼。 笑死讲衫,一個(gè)胖子當(dāng)著我的面吹牛缕棵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涉兽,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼招驴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了枷畏?” 一聲冷哼從身側(cè)響起别厘,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拥诡,沒(méi)想到半個(gè)月后触趴,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡渴肉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年冗懦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仇祭。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡披蕉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出乌奇,到底是詐尸還是另有隱情没讲,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布礁苗,位于F島的核電站爬凑,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏寂屏。R本人自食惡果不足惜贰谣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望迁霎。 院中可真熱鬧吱抚,春花似錦、人聲如沸考廉。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)昌粤。三九已至既绕,卻和暖如春啄刹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凄贩。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工誓军, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疲扎。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓昵时,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親椒丧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子壹甥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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