您好,登錄后才能下訂單哦!
這篇文章主要介紹nodejs中如何搭建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.獲取用戶角色
資源
1.保存資源樹(增加、修改、刪除都是這個方法)
/api/acl_resource/addArray 參數: { list:JSON.stringify(nodeList) } 返回值: { code:"200", msg:"創建成功!" }
2.獲取資源列表
/api/acl_resource/getList 參數:無 返回值: { "code": "200", "msg": "獲取詳情成功", "result": [ { "pId": "0", "name": "全部", "pinyin_name": "quanbu", "createdAt": "2017-05-26T09:49:03.139Z", "updatedAt": "2017-05-27T07:17:41.959Z", "id": "1" }, { "pId": "1", "name": "首頁", "pinyin_name": "shouye", "createdAt": "2017-05-26T09:49:03.141Z", "updatedAt": "2017-05-27T07:17:41.961Z", "id": "41cd1dce-66c9-4aca-91c2-9135fba291c3" }, { "pId": "1", "name": "經適房", "pinyin_name": "jingshifang", "createdAt": "2017-05-26T09:49:03.142Z", "updatedAt": "2017-05-27T07:17:41.962Z", "id": "d2da6e56-f005-43cf-b109-af3a966fb059" }, { "pId": "d2da6e56-f005-43cf-b109-af3a966fb059", "name": "經適房首頁", "pinyin_name": "jingshifangshouye", "createdAt": "2017-05-26T09:49:03.142Z", "updatedAt": "2017-05-27T07:17:41.963Z", "id": "74a7970a-d53e-494b-9671-4b7b415c3469" }, { "pId": "d2da6e56-f005-43cf-b109-af3a966fb059", "name": "經適房歷史", "pinyin_name": "jingshifanglishi", "createdAt": "2017-05-26T09:49:03.143Z", "updatedAt": "2017-05-27T07:17:41.964Z", "id": "15862997-acef-43c1-a1c3-3af4b8e6588b" }, { "pId": "1", "name": "對賬單", "pinyin_name": "duizhangdan", "createdAt": "2017-05-26T09:51:48.411Z", "updatedAt": "2017-05-27T07:17:41.965Z", "id": "78aa4788-f42f-42b6-9db1-e8ff0ad5b5df" }, { "pId": "78aa4788-f42f-42b6-9db1-e8ff0ad5b5df", "name": "對賬單首頁", "pinyin_name": "duizhangdanshouye", "createdAt": "2017-05-26T09:51:48.412Z", "updatedAt": "2017-05-27T07:17:41.966Z", "id": "c0f68fa4-81cd-4908-8005-97c88445d7b3" }, { "pId": "78aa4788-f42f-42b6-9db1-e8ff0ad5b5df", "name": "對賬單管理", "pinyin_name": "duizhangdanguanli", "createdAt": "2017-05-26T09:51:48.412Z", "updatedAt": "2017-05-27T07:17:41.966Z", "id": "5fe3e266-5a2a-47a4-b309-ee6f15db49ec" }, { "pId": "1", "name": "系統管理", "pinyin_name": "xitongguanli", "createdAt": "2017-05-26T09:51:48.413Z", "updatedAt": "2017-05-27T07:17:41.966Z", "id": "fbe848c4-950e-402d-92c5-6fe067fd1bac" }, { "pId": "fbe848c4-950e-402d-92c5-6fe067fd1bac", "name": "用戶管理", "pinyin_name": "yonghuguanli", "createdAt": "2017-05-26T09:51:48.416Z", "updatedAt": "2017-05-27T07:17:41.967Z", "id": "1fd06306-6539-48e5-bf10-99ecd337e143" }, { "pId": "fbe848c4-950e-402d-92c5-6fe067fd1bac", "name": "資源管理", "pinyin_name": "ziyuanguanli", "createdAt": "2017-05-26T09:51:48.416Z", "updatedAt": "2017-05-27T07:17:41.969Z", "id": "5de41a10-f31f-4eb2-91ba-25da102a25aa" }, { "pId": "fbe848c4-950e-402d-92c5-6fe067fd1bac", "name": "角色管理", "pinyin_name": "jiaoseguanli", "createdAt": "2017-05-26T09:51:48.416Z", "updatedAt": "2017-05-27T07:17:41.970Z", "id": "9ffb5a8a-c304-403a-a724-f47cc73a9162" }, { "pId": "1", "name": "new node1", "pinyin_name": "new node1", "createdAt": "2017-05-27T07:17:41.971Z", "updatedAt": "2017-05-27T07:17:41.971Z", "id": "d336dd69-80c7-492f-aee7-78a651b8305e" } ], "count": 13 }
角色
1.查詢角色列表
/api/acl_role/getList:獲取角色列表 參數:無 返回值: { "code": "200", "msg": "獲取詳情成功", "result": [ { "name": "經適房用戶", "createdAt": "2017-05-26T09:49:22.361Z", "updatedAt": "2017-05-26T09:49:22.361Z", "id": "27aab6d9-325c-4c88-be4a-5da516dc9613" }, { "name": "對賬單用戶", "createdAt": "2017-05-26T09:52:15.061Z", "updatedAt": "2017-05-26T09:52:15.061Z", "id": "ba306957-9c80-4abb-89fd-17be828dd5f5" }, { "name": "對賬單管理員", "createdAt": "2017-05-26T09:52:26.914Z", "updatedAt": "2017-05-26T09:52:26.914Z", "id": "fc154424-2264-4de9-9a7c-1b1df048f802" }, { "name": "超級管理員", "createdAt": "2017-05-26T09:52:39.894Z", "updatedAt": "2017-05-26T09:52:39.894Z", "id": "442cfc56-23a9-4cb9-85b5-641bc161c4c3" } ], "count": 4 }
2.修改角色
/api/acl_role/update 參數: { id:xxx, name:xxx, } 返回值: { code:"200", msg:"修改成功!", result:data.update }
3.查詢角色詳情(含角色的權限列表)
/api/acl_role/getOne 參數: id:27aab6d9-325c-4c88-be4a-5da516dc9613 返回值: { "code": "200", "msg": "獲取詳情成功", "result": { "info": { "name": "經適房用戶", "createdAt": "2017-05-26T09:49:22.361Z", "updatedAt": "2017-05-26T09:49:22.361Z", "id": "27aab6d9-325c-4c88-be4a-5da516dc9613" }, "resources": { "1": ["*"], "74a7970a-d53e-494b-9671-4b7b415c3469":["*"], "15862997-acef-43c1-a1c3-3af4b8e6588b": ["*"], "d2da6e56-f005-43cf-b109-af3a966fb059": ["*"], "d336dd69-80c7-492f-aee7-78a651b8305e":["*"] } } }
4.刪除角色
/api/acl_role/delete ① db刪除角色 ② acl刪除該角色和資源的關系removeAllow、刪除角色removeRole 參數: { id:xxx, } 返回值: { code:"200", msg:"刪除成功!", result:result }
5.給角色添加資源
/api/acl_role/allow ① 刪除角色和資源的關系acl.removeAllow ② 給角色和資源添加關系acl.allow 參數: { role:xxx, resources:xxx } 返回值: { code:"200", msg:"成功!" }
用戶相關:
1.用戶登錄
/api/acl_user/login 參數: { account:xxx, password:xxx } 返回值: { code:200, msg:"登錄成功" } { code:400, msg:"密碼錯誤" } { code:400, msg:"賬號不存在" }
2.用戶退出
/api/acl_user/logout 參數:{} 返回值: { code:200, msg:"退出成功!" }
3.添加用戶
/api/acl_user/add 參數: { name:xxx, account:xxx, password:xxx } 返回值: { code:"200", msg:"創建成功!", result:data.save }
4.修改用戶
/api/acl_user/update 參數: { id:xxx, name:xxx, account:xxx, password:xxx } 返回值: { code:"200", msg:"修改成功!", result:data.save }
5.查詢用戶詳情(含用戶權限列表)
/api/acl_user/getOne ① db獲取用戶信息 ② acl獲取用戶權限allowedPermissions 參數: { id:xxx, name:xxx, account:xxx, password:xxx } 返回值: { code:"200", msg:"修改成功!", result:data.save }
6.獲取用戶列表
/api/acl_user/getList 參數: { } 返回值: { "code": "200", "msg": "獲取詳情成功", "result": [ { "name": "wuwanyu", "createdAt": "2017-05-27T02:14:19.994Z", "updatedAt": "2017-05-27T02:50:56.309Z", "account": "120", "password": "123", "id": "7daa4635-9f9d-4c79-9f15-c827097ac15a" } ], "count": 1 }
7.刪除用戶
/api/acl_user/delete ① db刪除用戶 ② acl刪除用戶角色關系removeUserRoles、刪除用戶removeUser 參數: { id:xxx } 返回值: { code:"200", msg:"刪除成功!", result:result }
8.獲取用戶權限
/api/acl_user/allowedPermissions 參數: userId:xxx resources:xxx 返回值: { code:"200", msg:"成功!", result:result }
9.給用戶添加角色
/api/acl_user/addUserRoles ① 獲取用戶所有角色acl.userRoles、刪除用戶所有角色acl.removeUserRoles ② 添加新的角色acl.addUserRoles 參數: userId:xxx roles:xxx 返回值: { code:"200", msg:"成功!", result:result }
10.給用戶添加角色
/api/acl_user/userRoles ① 獲取用戶所有角色acl.userRoles 參數: userId:xxx 返回值: { code:"200", msg:"成功!", result:result }
以上是“nodejs中如何搭建express權限管理系統”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。