入門SpringSecurity流程簡介

自己做的項(xiàng)目急需權(quán)限管理模塊猿妈,所以趕緊就著SpringSecurity的視頻看著學(xué)了學(xué),雖然上次學(xué)習(xí)失敗了,但也不影響這次從頭再來们衙,也算是為這次奠定了一點(diǎn)點(diǎn)基礎(chǔ)了吧。通過這次學(xué)習(xí)碱呼,我也又一次意識(shí)到了蒙挑,自己的學(xué)習(xí)和領(lǐng)悟能力有多么的弱,自己真的是水的一批愚臀,沒有天賦要更加努力才行忆蚀。

好了,進(jìn)入正題。

SpringSecurity認(rèn)證

首先大致的認(rèn)證流程就是:用戶請(qǐng)求過來蜓谋,經(jīng)過一系列的filter(AuthenticationFilter)來進(jìn)行過濾梦皮,如果符合哪個(gè)filter中所定義的請(qǐng)求url,就在filter中開始認(rèn)證流程桃焕,請(qǐng)求認(rèn)證Manager進(jìn)行認(rèn)證剑肯。(不同的請(qǐng)求比如 普通的登錄時(shí)/login,手機(jī)號(hào)登錄可能就是/smsLogin)
然后就會(huì)牽扯到下一個(gè)類观堂,也就是認(rèn)證管理器相當(dāng)于让网,大概名字叫做 AuthenticationManager,一看manager就知道是個(gè)管理者师痕。里面收攏了很多用來認(rèn)證的類溃睹,也就是各種各樣的Provider(認(rèn)證器)。在Manager中會(huì)遍歷每一個(gè)provider胰坟,看看能不能對(duì)當(dāng)前傳遞進(jìn)來的用戶信息進(jìn)行認(rèn)證因篇,可以的話就進(jìn)行到Provider中進(jìn)行認(rèn)證。
Provider中有著authenticate方法來對(duì)用戶信息進(jìn)行認(rèn)證笔横,這其中還包含了另一個(gè)實(shí)現(xiàn)竞滓,UserDetailService,通過這個(gè)Service來尋找對(duì)應(yīng)的用戶吹缔,我們的數(shù)據(jù)庫查找邏輯就是從這個(gè)service中進(jìn)入的商佑。通過service拿到用戶信息后,重新回到provider中進(jìn)行比對(duì)厢塘,比對(duì)成功了就算是認(rèn)證成功了茶没。
這其中貫穿的還有一個(gè)類用來保存用戶信息,在Security中默認(rèn)是叫UsernamePasswordAuthenticationToken晚碾,說是叫一個(gè)token抓半,就是用來保存信息的,在最一開始傳入filter的時(shí)候迄薄,也會(huì)生成一個(gè)對(duì)應(yīng)的登錄token琅关。
我們寫自定義的時(shí)候可以比對(duì)著官方給的類來臨摹,再結(jié)合著一些教學(xué)視頻來看讥蔽,還是比較好寫出來的涣易。

SpringSecurity鑒權(quán)踩坑

我寫好了登錄之類的之后,看了官方文檔有介紹說每個(gè)用戶可以有對(duì)應(yīng)的角色冶伞,可以針對(duì)角色來定義相應(yīng)的權(quán)限管理新症。然后我就東奔西找,死活沒找到角色是怎么定義的响禽⊥降可能也是我是第一次接觸這類權(quán)限管理框架的緣故荚醒,實(shí)在是迷。我的第一反應(yīng)是隆嗅,角色應(yīng)該被定義在數(shù)據(jù)庫中界阁,可是看了好多篇博客,都沒提數(shù)據(jù)庫的事胖喳。知道有RBAC權(quán)限管理這么回事泡躯,可是RBAC功能有點(diǎn)太過于強(qiáng)大,不是我要實(shí)現(xiàn)的目標(biāo)丽焊。较剃。。天吶技健,到底該把角色定義到哪里。后來終于翻到有的博客中寫到獲取用戶角色的方法 public Collection<? extends GrantedAuthority> getAuthorities(),看著這個(gè)我也是摸不著頭腦删掀。纤子。想想有的人是在Security給定的User類的構(gòu)造方法中傳入一些角色泽论,但是我需要編寫自己的User實(shí)體類翼悴,構(gòu)造方法的方法也泡湯了鹦赎。古话。
中間還以為只要是登錄上的角色默認(rèn)都會(huì)加上角色杖们,可是試了試加上 @PreAuthorize("hasRole('USER')"),還是訪問不到孝治。
最后終于迷過來,自己寫的User類是實(shí)現(xiàn)了UserDetails接口的,里面是有上面提到的getAuthorities方法瓤介,只不過里面return了一個(gè)null,實(shí)際上是可以在這里面定義用戶邏輯的。因?yàn)槲业膽?yīng)用場(chǎng)景比較簡單琢锋,登錄上的角色都是User,所以直接在方法里返回了一個(gè)ROLE_USER

image.png

直覺告訴我缨睡,這么寫很不規(guī)范,應(yīng)該還是有其他的方法來設(shè)定角色的揍堰。還是再讀讀eladmin吧屏歹。

?著作權(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)離奇詭異式塌,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)友浸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門峰尝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人收恢,你說我怎么就攤上這事武学。” “怎么了伦意?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵火窒,是天一觀的道長。 經(jīng)常有香客問我驮肉,道長熏矿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任离钝,我火速辦了婚禮曲掰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奈辰。我一直安慰自己,他們只是感情好乱豆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布奖恰。 她就那樣靜靜地躺著,像睡著了一般宛裕。 火紅的嫁衣襯著肌膚如雪瑟啃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天揩尸,我揣著相機(jī)與錄音蛹屿,去河邊找鬼。 笑死岩榆,一個(gè)胖子當(dāng)著我的面吹牛错负,可吹牛的內(nèi)容都是我干的坟瓢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼犹撒,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼折联!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起识颊,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤诚镰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后祥款,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體清笨,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有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
  • 文/蒙蒙 一炊甲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧欲芹,春花似錦卿啡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至浙宜,卻和暖如春官辽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背粟瞬。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國打工同仆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人裙品。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓俗批,卻偏偏與公主長得像俗或,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扶镀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353