如何實現(xiàn)后臺管理系統(tǒng)中的權限管理?

總體思路:

1.用戶填寫完賬號和密碼后向服務端驗證是否正確,驗證通過之后裆蒸,服務端會返回一個token痢站。
2.拿到token之后將這個token存起來谒拴,保證刷新頁面后能記住用戶登錄狀態(tài)撤奸,根據(jù)token去調用userInfo的接口來獲取用戶的詳細信息(如用戶權限,用戶名等等信息)傲隶。
3.權限驗證:通過token獲取用戶對應的權限饺律,將請求的權限數(shù)組和用戶信息存儲到vuex中 ,動態(tài)根據(jù)用戶的權限通過處理得到其對應有權限的路由跺株,通過 router.addRoutes 動態(tài)添加這些路由复濒。

一、登錄:

登錄成功后乒省,服務端會返回一個 token(該token的是一個能唯一標示用戶身份的一個key)巧颈,之后我們將token存儲在本地localstorage之中,這樣下次打開頁面或者刷新頁面的時候能記住用戶的登錄狀態(tài)袖扛,不用再去登錄頁面重新登錄了砸泛。


存token
涉及的安全性問題:

為了保證安全性,后臺所有token有效期(Expires/Max-Age)都是Session蛆封,就是當瀏覽器關閉了就丟失了唇礁。重新打開瀏覽器都需要重新登錄驗證,后端也會在每周固定一個時間點重新刷新token惨篱,讓后臺用戶全部重新登錄一次盏筐,確保后臺用戶不會因為電腦遺失或者其它原因被人隨意使用賬號。

二砸讳、攔截路由進行判斷

用戶登錄成功之后琢融,我們會在全局鉤子router.beforeEach中攔截路由楷拳,判斷是否已獲得token,在獲得token之后我們就要去獲取用戶的基本信息了


image.png

頁面會先從 localstorage中查看是否存有 token吏奸,沒有,就走一遍上一部分的流程重新登錄陶耍,如果有token,就會把這個 token 返給后端去拉取user_info奋蔚,保證用戶信息是最新的。 當然如果是做了單點登錄得的的話烈钞,用戶信息存儲在本地也是可以的泊碑。當你一臺電腦登錄時,另一臺會被提下線毯欣,所以總會重新登錄獲取最新的內容馒过。

三、權限控制

前端會有一份路由表酗钞,它表示了每一個路由可訪問的權限腹忽。當用戶登錄之后,通過 token 獲取用戶的 role 砚作,動態(tài)根據(jù)用戶的 role 算出其對應有權限的路由窘奏,再通過router.addRoutes動態(tài)掛載路由。但這些控制都只是頁面級的葫录,說白了前端再怎么做權限控制都不是絕對安全的着裹,后端的權限驗證是逃不掉的。


router.addRoutes動態(tài)添加路由

前端控制頁面級的權限米同,不同權限的用戶顯示不同的側邊欄和限制其所能進入的頁面(也做了少許按鈕級別的權限控制)骇扇,后端則會驗證每一個涉及請求的操作,驗證其是否有該操作的權限面粮,每一個后臺的請求不管是 get 還是 post 都會讓前端在請求 header里面攜帶用戶的 token少孝,后端會根據(jù)該 token 來驗證用戶是否有權限執(zhí)行該操作。若沒有權限則拋出一個對應的狀態(tài)碼但金,前端檢測到該狀態(tài)碼韭山,做出相對應的操作。


請求攔截內設置請求頭

四冷溃、利用vuex管理路由表钱磅,根據(jù)vuex中可訪問的路由渲染側邊欄組件。

具體實現(xiàn):
1.創(chuàng)建vue實例的時候將vue-router掛載似枕,但這個時候vue-router掛載一些登錄或者不用權限的公用的頁面盖淡。
2.當用戶登錄后,獲取用role凿歼,將role和路由表每個頁面的需要的權限作比較褪迟,生成最終用戶可訪問的路由表冗恨。
3.調用router.addRoutes(store.getters.addRouters)添加用戶可訪問的路由。
4.使用vuex管理路由表味赃,根據(jù)vuex中可訪問的路由渲染側邊欄組件掀抹。


image.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市心俗,隨后出現(xiàn)的幾起案子傲武,更是在濱河造成了極大的恐慌,老刑警劉巖城榛,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件揪利,死亡現(xiàn)場離奇詭異,居然都是意外死亡狠持,警方通過查閱死者的電腦和手機疟位,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喘垂,“玉大人甜刻,你說我怎么就攤上這事≌眨” “怎么了罢吃?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長昭齐。 經常有香客問我尿招,道長,這世上最難降的妖魔是什么阱驾? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任就谜,我火速辦了婚禮,結果婚禮上里覆,老公的妹妹穿的比我還像新娘丧荐。我一直安慰自己,他們只是感情好喧枷,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布虹统。 她就那樣靜靜地躺著,像睡著了一般隧甚。 火紅的嫁衣襯著肌膚如雪车荔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天戚扳,我揣著相機與錄音忧便,去河邊找鬼。 笑死帽借,一個胖子當著我的面吹牛珠增,可吹牛的內容都是我干的超歌。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蒂教,長吁一口氣:“原來是場噩夢啊……” “哼巍举!你這毒婦竟也來了?” 一聲冷哼從身側響起凝垛,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤禀综,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后苔严,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡孤澎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年届氢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片覆旭。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡退子,死狀恐怖,靈堂內的尸體忽然破棺而出型将,到底是詐尸還是另有隱情寂祥,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布七兜,位于F島的核電站丸凭,受9級特大地震影響,放射性物質發(fā)生泄漏腕铸。R本人自食惡果不足惜惜犀,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狠裹。 院中可真熱鬧虽界,春花似錦、人聲如沸涛菠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽俗冻。三九已至礁叔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間迄薄,已是汗流浹背晴圾。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留噪奄,地道東北人死姚。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓人乓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親都毒。 傳聞我的和親對象是個殘疾皇子色罚,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內容