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


最近,公司老大給了這個任務,功能差不多完成了,現將一些經過分享給大家!

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

  1. 菜單權限的設計

         思路:

  1. 5個表的建立:用戶表、角色表、菜單表、用戶角色表、角色菜單表
  2. 后台動態加載json數據給前台。   這里的json數據,就是菜單欄的數據(就是通過后台數據查詢找出當前用戶擁有哪些菜單)
  3. 用戶(操作員、管理員、超級管理員)只能看到自己對應的菜單數據

          思路:sql語句加上對應的where條件 ,來對查詢到的所有數據做進一步的篩選。

 

       實現步驟:

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

 

 

-----------------------功能完成后的表-------------------------------

用戶表

角色表

 

 

 菜單表

 

 

 

 關系表  

 

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

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方式     自己在后端處理這些數據,然后將處理的樹形結構數據返回給前端人員,具體實現方法,我將在我的下一篇博客里寫出來

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM