亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

詳解nodejs中express搭建權限管理系統

2019-11-19 15:26:10
字體:
來源:轉載
供稿:網友

權限管理,是管理系統中的常見組件。通常需要定義資源,把資源調配給用戶,通過判斷用戶是否有權限增刪改查來實現。

初衷:

使用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:xxxresources:xxx返回值:{code:"200",msg:"成功!",result:result}

9.給用戶添加角色

/api/acl_user/addUserRoles① 獲取用戶所有角色acl.userRoles、刪除用戶所有角色acl.removeUserRoles② 添加新的角色acl.addUserRoles參數:userId:xxxroles:xxx返回值:{code:"200",msg:"成功!",result:result}

10.給用戶添加角色

/api/acl_user/userRoles① 獲取用戶所有角色acl.userRoles參數:userId:xxx返回值:{code:"200",msg:"成功!",result:result}

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
激情久久av一区av二区av三区| 欧美午夜美女看片| 欧美午夜电影在线| 国产精品99久久久久久www| 久久人91精品久久久久久不卡| 亚洲综合自拍一区| 国产精品69av| 欧美日韩国产中文字幕| 搡老女人一区二区三区视频tv| 狠狠干狠狠久久| 日韩电影在线观看免费| 日韩极品精品视频免费观看| 高潮白浆女日韩av免费看| 中文字幕精品久久久久| 久久精品国产成人| 超碰97人人做人人爱少妇| 蜜臀久久99精品久久久久久宅男| 亚洲国产精品推荐| 欧美电影免费观看高清完整| 91在线观看免费网站| 91九色精品视频| 精品亚洲一区二区三区四区五区| 操人视频在线观看欧美| 国产免费观看久久黄| 国产美女久久精品香蕉69| 国产精品成人av在线| 国内精品美女av在线播放| 中文字幕日韩欧美精品在线观看| 久久精品2019中文字幕| 久久久亚洲精选| 欧美一二三视频| 69av成年福利视频| 欧美一级视频免费在线观看| 亚洲xxx大片| 97精品国产97久久久久久| 成人免费看黄网站| 成人网欧美在线视频| 97超级碰在线看视频免费在线看| 日韩中文字幕在线精品| 成人午夜在线影院| 成人亚洲综合色就1024| 午夜精品视频网站| 精品中文字幕在线观看| 欧美日韩福利在线观看| 成人黄色在线免费| 性欧美暴力猛交69hd| 91系列在线播放| 久久久av免费| 日韩一区二区欧美| 亚洲国产美女久久久久| 97精品一区二区三区| 国产不卡av在线| 成人国产精品久久久| 亚洲激情国产精品| 色av吧综合网| 亚洲男人的天堂网站| 欧美激情精品久久久久久| 91黑丝高跟在线| 亚洲色图综合久久| 亚洲国产另类 国产精品国产免费| 欧美俄罗斯乱妇| 亚洲国产成人91精品| 日韩av大片在线| 国产精品视频久久| 日韩最新在线视频| 国产精品美女无圣光视频| 久久久精品电影| 红桃视频成人在线观看| 欧美午夜久久久| 久久欧美在线电影| 国产亚洲精品久久久优势| 日本最新高清不卡中文字幕| 中文字幕日韩精品有码视频| 狠狠躁夜夜躁人人爽超碰91| 欧美高清第一页| 国产精品专区第二| 日韩一区二区三区xxxx| 欧美精品一本久久男人的天堂| 最近2019中文字幕第三页视频| 中文综合在线观看| 亚洲综合成人婷婷小说| 久久久91精品| 国产国语videosex另类| 91理论片午午论夜理片久久| 国产精品美女久久久久av超清| 日韩av免费在线播放| 欧美精品亚州精品| 亚洲第一天堂无码专区| 国产一区二区三区毛片| 成人激情视频网| 亚洲最大福利网站| 国产精品久久国产精品99gif| 国产精品视频午夜| 亚洲精品永久免费精品| 亚洲美女性生活视频| 成人中文字幕+乱码+中文字幕| 日韩三级影视基地| 久久成年人免费电影| 国产视频自拍一区| 国产综合久久久久久| 日韩av在线免费看| 国产精品久久久久久久久久东京| 黑人极品videos精品欧美裸| 在线观看日韩视频| 久久九九全国免费精品观看| 亚洲美女福利视频网站| 国产精品三级在线| 日韩电影免费在线观看| 欧美视频在线观看免费| 亚洲男人7777| 78m国产成人精品视频| 国产成人精品999| 2020国产精品视频| 欧美人与性动交| 91精品在线国产| 色小说视频一区| 不卡av电影在线观看| 成人综合国产精品| 久久好看免费视频| 国产不卡av在线免费观看| 色偷偷av一区二区三区乱| 日韩av网站在线| 国产亚洲欧美日韩美女| 97国产真实伦对白精彩视频8| 中文字幕在线成人| 成人免费大片黄在线播放| 91精品在线观看视频| 亚洲r级在线观看| 日本亚洲欧美三级| 久久久99免费视频| 国产精品96久久久久久又黄又硬| 亚洲男子天堂网| 欧美另类xxx| 97碰碰碰免费色视频| 亚洲欧美日韩高清| 亚洲丝袜一区在线| 日韩女在线观看| 亚洲欧美日韩区| 国产网站欧美日韩免费精品在线观看| 久久艳片www.17c.com| 久久视频国产精品免费视频在线| 一色桃子一区二区| 日韩欧美福利视频| 国产丝袜一区二区三区免费视频| 亚洲欧美国产高清va在线播| 日韩在线观看免费网站| 91精品美女在线| 欧美午夜片欧美片在线观看| 中文字幕亚洲第一| 粉嫩老牛aⅴ一区二区三区| 欧美激情小视频| 亚洲网在线观看| 欧美黑人xxx| 欧美日韩激情美女| 夜夜嗨av一区二区三区免费区| 日韩一区视频在线| 日韩电影大片中文字幕| 亚洲综合国产精品| 亚洲新中文字幕| 国产97在线|亚洲| 亚洲色图欧美制服丝袜另类第一页| xxx成人少妇69| 亚洲品质视频自拍网| 亚洲国产精品专区久久|