express搭建權限管理系統
權限管理,是管理系統中的常見組件。通常需要定義資源,把資源調配給用戶,通過判斷用戶是否有權限增刪改查來實現。
初衷:
使用express開發過的項目大大小小加在一起也有二十多個了,之前做的各個項目都是獨立存在的。最近領導建議說把這些小項目整合到一個大的平台上,給各部門開權限,讓他們在一個平台上進行操作。這樣做的好處,首先是便於項目管理,其次是節約開發成本。但好像目前使用nodejs做權限管理的資料並不多,這里特意分享出來,僅供參考。
一開始在node_acl、Connect Roles、rbac這幾個框架中徘徊,最終選擇的node_acl框架,但node_acl只幫你做了權限管理的一部分工作,只保存用戶、角色、資源三者 之間的關聯關系,用戶、角色、資源本身並沒有保存。而我們要做的就是把用戶、角色、資源的增刪改查補齊,就是一個完整的權限管理系統了。
預期效果:
超級管理員登錄后,可以進行所有操作,可以看到所有菜單欄;
普通用戶登錄后只有部分權限,只能看到部分菜單欄或操作按鈕。
主要模塊:
- express:node框架
- express-hbs:模板引擎
- node_acl:權限管理系統的核心
- mongodb:數據庫
- sails-mongodb:連接mongodb的引擎
前端:
Amaze ui、angular、Z-Tree
源碼地址:https://github.com/wuwanyu/aclDemo
運行前提:
安裝mongodb數據庫
運行
1. 數據准備
(1) 將源代碼目錄下sql文件夾的內容,拷貝到mongodb安裝目錄的bin目錄下
(2) 命令行方式進入mongodb安裝目錄的bin目錄下,運行 mongorestore -d acltest acltest.dmp/acltest,將數據導入acltest表
2.安裝依賴包:npm install
3. 運行:npm start
4.在瀏覽器輸入: http://localhost:3000(用戶名/密碼:admin/admin 或 user/123)
部分截圖
項目相關接口
資源相關:
1.保存資源樹
2.獲取資源列表
角色相關:
1.添加角色
2.修改角色
3.查詢角色列表
4.刪除角色
4.查詢角色詳情(含角色的權限列表)
用戶相關:
1.用戶登錄
2.用戶退出
3.添加用戶
4.修改用戶
5.刪除用戶
6.獲取用戶列表
7.查詢用戶詳情(含用戶權限列表)
8.給用戶添加角色
9.獲取用戶角色
nodejs開源權限管理框架參考:
node_acl(1373星):https://github.com/OptimalBits/node_acl
優點:支持express
Connect Roles(564星): https://github.com/ForbesLindesay/connect-roles
點評:支持express,還需要引入passport.js
rbac(309星 ):https://github.com/CherryProjects/rbac
優點:支持express