基于Shiro的administrator權(quán)限管理系統(tǒng)的初步分析

模型

基礎(chǔ)模型共有三個概念:

  • 用戶
  • 角色
  • 菜單

用戶與角色是一對多的關(guān)系,角色與菜單是一對多的關(guān)系。

角色

角色是中間過渡層,某個登錄的用戶,通過用戶唯一標(biāo)識(判斷用戶承擔(dān)哪些角色),判斷具有哪些權(quán)限,進(jìn)而確定其能執(zhí)行哪些操作(訪問哪些資源)

菜單

在administrator項目中,菜單共分為三類,如下:

  • 目錄(無頁面指向,無權(quán)限依附)
  • 菜單(有頁面指向,無權(quán)限依附)
  • 按鈕(無頁面指向,有權(quán)限依附)

按鈕

按可見性分,按鈕分為兩類,一類是看的見的按鈕,一類是看不見的按鈕。

  • 看的見的按鈕,稱之為功能性按鈕,每一個功能性按鈕都應(yīng)該在權(quán)限系統(tǒng)中注冊;
  • 看不見的按鈕在頁面中不體現(xiàn),但用于被權(quán)限依附。(特指【查看】按鈕)。

模型實現(xiàn)

模型在項目中通過5張關(guān)系表來實現(xiàn):

  1. 用戶表sys_user(主鍵、用戶名、密碼(密)、鹽)
  2. 角色表sys_role(主鍵、名稱、備注)
  3. 用戶角色關(guān)系表sys_user_role(主鍵、用戶主鍵、角色主鍵)
  4. 菜單表sys_menu(主鍵、父鍵、名稱、指向、權(quán)限、類型、圖片、排序)
  5. 角色菜單關(guān)系表sys_role_menu(主鍵、角色主鍵、菜單主鍵)

職責(zé)分配

Shiro的職責(zé)是,對每一個操作請求(及資源訪問請求),驗證請求者是否具備對應(yīng)的權(quán)限?!皺?quán)限”這個概念在項目中的具體落地則是指唯一的字符串。由于項目龐大,權(quán)限較多,因此需要采用冒號分隔法來體現(xiàn)權(quán)限的層級結(jié)構(gòu)。

為了排除一些不需要驗證的的操作請求(及資源訪問請求),Shiro提供了過濾器支持。具體如何配置及使用可參見官網(wǎng)。

對于Shiro的session管理、緩存管理等其他方面的知識,時常參考官網(wǎng)及imooc網(wǎng)站進(jìn)行學(xué)習(xí)。

開發(fā)者的職責(zé)是:

  1. 負(fù)責(zé)向Shiro提供其需要的Realm。Realm存儲了合法用戶有哪些,權(quán)限定義了多少個,及用戶與權(quán)限的對應(yīng)關(guān)系(需通過角色層過渡)。
  2. 在定義一個接口時,需要定義對應(yīng)的權(quán)限,這個權(quán)限最終要依附于“按鈕”進(jìn)行分配。這個按鈕可以在界面上體現(xiàn)(可點擊),也可以不在界面上體現(xiàn)(只用于管理員分配)

原則上講,可點擊按鈕對應(yīng)的接口權(quán)限必須依附于對應(yīng)的按鈕,而其他跨表接口的權(quán)限則可以統(tǒng)一寫入頁面對應(yīng)的【查看】按鈕不可見按鈕中。(減少一個權(quán)限對應(yīng)一個按鈕的實際操作的復(fù)雜度)

總結(jié)

下面總結(jié)一下在實際開發(fā)過程中,對于權(quán)限分配的可操作步驟:

后端開發(fā)程序員(寫接口時),在文檔中應(yīng)說明調(diào)用該接口應(yīng)具備的權(quán)限(字符串)

前端開發(fā)程序員(寫頁面和js的),在界面中調(diào)用的每一個接口,都應(yīng)判斷該接口的調(diào)用是否需要權(quán)限。如果需要權(quán)限,則應(yīng)通過后臺管理系統(tǒng)將權(quán)限分配給對應(yīng)的按鈕上。(實體按鈕)(虛擬按鈕)

后記

當(dāng)用戶登錄成功之后,頁面會緩存該用戶的所具備的權(quán)限列表(由服務(wù)器返回),頁面根據(jù)權(quán)限的有無來確定菜單(包括目錄、菜單、按鈕)的顯示與否。

Realm中存儲的權(quán)限用于比對,即使前端頁面通過非法手段在緩存的權(quán)限列表中增加了部分假權(quán)限,進(jìn)而看到了被隱藏的按鈕,但到服務(wù)端的時候依然驗證不過。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 說明:本文很多觀點和內(nèi)容來自互聯(lián)網(wǎng)以及各種資料,如果侵犯了您的權(quán)益,請及時聯(lián)系我,我會刪除相關(guān)內(nèi)容。 權(quán)限管理 基...
    寇寇寇先森閱讀 7,754評論 8 76
  • 讀你想讀的書,寫你想寫的文字,去你想去的地方,見你想見的人。趁時光不老,趁我依舊年輕。 看似簡單卻談何容易。 這一...
    左小祺閱讀 700評論 2 7
  • 無戒365天日更挑戰(zhàn)營第023天 毫無疑問,《獵場》已經(jīng)撲了。 即使姜偉老師再不理解,再說是觀眾挑剔,《獵場》也是...
    離兒的日劇日影與碎碎念閱讀 364評論 2 0
  • 好好看看,梳理,做筆記總結(jié),建立自己的知識體系,你還有很長的路要走,晚安。
    簡小白mq閱讀 82評論 0 0

友情鏈接更多精彩內(nèi)容