權限與菜單管理
PieMDM 的菜單系統與權限系統緊密集成,支持動態菜單渲染。這意味著用戶登錄系統後,只能看到其擁有權限的菜單項。
菜單管理
菜單管理功能允許管理員配置系統的導航結構。
1. 菜單列表
以樹形結構展示系統的所有菜單和按鈕。
- 目錄:一級導航,通常不直接對應頁面。
- 菜單:具體的頁面入口。
- 按鈕:頁面內的操作及其對應的資源標識。
2. 新增/編輯菜單
在配置菜單時,主要包含以下字段:
- 上級菜單:選擇父級節點。
- 菜單類型:目錄 / 菜單 / 按鈕。
- 菜單名稱:顯示在側邊欄的標題。
- 路由地址:前端路由路徑(如
/system/user)。 - 組件路徑:Vue 組件的文件路徑(如
@/views/system/role/index.vue)。 - 權限標識:後端鑑權的關鍵標識(如
system:user:list)。 - 顯示狀態:控制菜單是否在側邊欄顯示(部分功能頁面可能需要隱藏)。
- 排序:控制菜單的顯示順序。
權限控制機制
菜單可見性
前端應用在初始化時,會調用 API 獲取當前用戶的權限列表。系統根據用戶的權限標識,過濾出可訪問的路由表並動態掛載。如果用戶沒有某個菜單的權限,該菜單將不會渲染在側邊欄中。
按鈕級權限
在頁面內部,通過指令或函數控制按鈕的顯示。 例如,只有擁有 system:user:add 權限的用戶,才能看到“新建用戶”按鈕。
html
<!-- 示例:Vue 指令控制按鈕權限 -->
<el-button v-hasPerm="['system:user:add']">新建用戶</el-button>API 接口鑑權
前端的權限控制僅用於提升用戶體驗,核心的安全性依賴於後端的接口鑑權。 後端中間件會攔截請求,驗證當前用戶的角色是否包含請求所需的權限標識。如果權限不足,將返回 403 Forbidden。
配置建議
- 層級清晰:建議按照“模塊 -> 功能 -> 操作”的層級結構組織權限標識(如
system->user->add)。 - 標識唯一:確保每個菜單和按鈕的權限標識在系統中是唯一的。
- 同步維護:新增後端接口時,應同步在菜單管理中添加對應的按鈕/資源權限,並分配給相應角色。