1. 接口權限控制
接口權限控制通常通過 JWT(JSON Web Token)實現。后端通過 JWT 插件生成 token,前端將 token 存儲,并在每次請求時將token 字段發送給后端進行驗證。
實現方式:
- 前端處理:在每次請求時,將
token放入請求頭中。 - 后端驗證:后端接收到請求后,驗證
token的有效性。 - Token 失效處理:如果
token失效(如 401 錯誤),前端需要重定向到登錄頁面。
2. 路由權限控制
路由權限控制確保不同用戶根據其角色訪問不同的頁面或功能模塊。實現路由權限控制有兩種常見方案:
方案一:后端動態返回路由配置
后端根據用戶角色返回不同的路由表,前端根據后端返回的路由動態生成路由配置。這種方式適合需要靈活管理權限的場景,路由配置完全由后端控制。
實現步驟:
- 后端返回路由配置:后端在用戶登錄成功后,根據用戶的角色或權限,返回一份包含該用戶可以訪問的路由表的 JSON 數據。
- 前端接收路由配置:前端通過 API 調用后端的接口,獲取路由配置。
- 前端生成路由:前端通過 Vue Router 動態添加路由,將后端返回的路由表注入到 Vue Router 中。
- 渲染頁面:前端根據動態添加的路由,展示用戶可以訪問的頁面。
方案二:前端基于角色的路由表
- 前端配置好完整的路由表,并通過在
meta對象中設置roles屬性來指定哪些角色可以訪問某些路由。 - 通過 Vue Router 的導航守衛
beforeEach()來進行權限校驗,攔截不符合權限的訪問請求。
3. 按鈕權限控制
通過自定義指令,可以根據用戶的權限動態控制按鈕的顯示與隱藏。以后臺管理系統為例,每個用戶所擁有的按鈕權限不一樣。管理員配置權限之后,用戶登錄時,從接口拿到按鈕權限列表,然后根據后臺數據判斷顯示哪些按鈕。
實現方式:
- 管理員配置權限之后,用戶登錄時,從接口拿到按鈕權限列表,然后根據后臺數據判斷當前用戶是否有權限執行某個操作(如編輯、刪除、新增等)。
- 通過自定義指令
v-has來控制按鈕是否顯示。