基於角色的菜單按鈕權限的設計及實現

最近,公司老大給了這個任務,功能差很少完成了,現將一些通過分享給你們!前端

------------------開始設計時-----------------web

  1. 菜單權限的設計

         思路:sql

  1. 5個表的創建:用戶表、角色表、菜單表、用戶角色表、角色菜單表
  2. 後臺動態加載json數據給前臺。   這裏的json數據,就是菜單欄的數據(就是經過後臺數據查詢找出當前用戶擁有哪些菜單)
  3. 用戶(操做員、管理員、超級管理員)只能看到本身對應的菜單數據

          思路:sql語句加上對應的where條件 ,來對查詢到的全部數據作進一步的篩選。json

 

       實現步驟:後端

  1. 設計表結構,
  2. 依次往菜單表、角色表、用戶表中加入數據,
  3. 根據頁面須要的數據,設計webapi接口方法,
  4. 經過網頁操做將數據加入角色菜單 rel_rolemenu、用戶角色rel_userrole的關係表中

 

 

-----------------------功能完成後的表-------------------------------api

用戶表spa

角色表設計

 

 

 菜單表blog

 

 

 

 關係表  接口

 

 -------------------------開發過程當中發現的問題------------------------------

1.  返回當前用戶的菜單按鈕數據

A方式   經過關係表查詢 , 這種方式查詢不方便 (若是用EF的導航屬性的話,實現起來仍是相對簡潔些的) ,可是作數據修改的時候很方便 ,能夠直接對關係表作操做。

B方式   經過存儲的MenuIds去菜單表中作查詢,這種方式查看查詢方便,可是修改不方便,須要 在 用戶更新角色數據、角色更新權限數據、權限數據更新時,去更新用戶表裏面的MenuIds值 非常繁瑣

 

我採用的方式:因爲我的比較懶,喜歡數據可以直觀些,也不太知道哪一種方式好,就把2種方式都用了!   可是我的建議,仍是用第一種方式,不要弄複雜了,功能能實現就行!

過後分析總結: A方式  在表裏就不須要加MenuIds、RoleIds字段來處理,直接經過 用戶角色列表,操做關係表 rel_userRole、rel_roleMenu表來處理,因爲咱們現有公司該表沒有作軟刪除的設計,還須要在刪除 單條menuId、roleId值時,去這些關係表裏刪除對應的記錄

                          B方式  實際上就不須要建關係表了, 而要加上MenuIds、RoleIds字段值,而後經過這些MenuIds、RoleIds去Menu表、Role表中找出對應的記錄就能夠了。 在進行menu表、role表數據進行更新時要找出它所影響的 用戶數據、角色數據是哪些、而後更新這些數據的MenuIds、RoleIds值

 

 

2. 菜單表父子結構的數據

A方式     直接將表數據交給前端人員處理成樹形結構

B方式     本身在後端處理這些數據,而後將處理的樹形結構數據返回給前端人員,具體實現方法,我將在個人下一篇博客裏寫出來

相關文章
相關標籤/搜索