這篇文章主要介紹nodejs中如何搭建express權(quán)限管理系統(tǒng),文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)作為成都網(wǎng)站建設(shè)公司,專(zhuān)注成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),有關(guān)成都企業(yè)網(wǎng)站建設(shè)方案、改版、費(fèi)用等問(wèn)題,行業(yè)涉及建筑動(dòng)畫(huà)等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。
權(quán)限管理,是管理系統(tǒng)中的常見(jiàn)組件。通常需要定義資源,把資源調(diào)配給用戶,通過(guò)判斷用戶是否有權(quán)限增刪改查來(lái)實(shí)現(xiàn)。
初衷:
使用express開(kāi)發(fā)過(guò)的項(xiàng)目大大小小加在一起也有二十多個(gè)了,之前做的各個(gè)項(xiàng)目都是獨(dú)立存在的。最近領(lǐng)導(dǎo)建議說(shuō)把這些小項(xiàng)目整合到一個(gè)大的平臺(tái)上,給各部門(mén)開(kāi)權(quán)限,讓他們?cè)谝粋€(gè)平臺(tái)上進(jìn)行操作。這樣做的好處,首先是便于項(xiàng)目管理,其次是節(jié)約開(kāi)發(fā)成本。但好像目前使用nodejs做權(quán)限管理的資料并不多,這里特意分享出來(lái),僅供參考。
一開(kāi)始在node_acl、Connect Roles、rbac這幾個(gè)框架中徘徊,最終選擇的node_acl框架,但node_acl只幫你做了權(quán)限管理的一部分工作,只保存用戶、角色、資源三者 之間的關(guān)聯(lián)關(guān)系,用戶、角色、資源本身并沒(méi)有保存。而我們要做的就是把用戶、角色、資源的增刪改查補(bǔ)齊,就是一個(gè)完整的權(quán)限管理系統(tǒng)了。
預(yù)期效果:
超級(jí)管理員登錄后,可以進(jìn)行所有操作,可以看到所有菜單欄;
普通用戶登錄后只有部分權(quán)限,只能看到部分菜單欄或操作按鈕。
主要模塊:
express:node框架
express-hbs:模板引擎
node_acl:權(quán)限管理系統(tǒng)的核心
MongoDB:數(shù)據(jù)庫(kù)
sails-mongodb:連接mongodb的引擎
前端:
Amaze ui、angular、Z-Tree
源碼地址:https://github.com/wuwanyu/aclDemo
運(yùn)行前提:
安裝mongodb數(shù)據(jù)庫(kù)
運(yùn)行
1. 數(shù)據(jù)準(zhǔn)備
(1) 將源代碼目錄下sql文件夾的內(nèi)容,拷貝到mongodb安裝目錄的bin目錄下
(2) 命令行方式進(jìn)入mongodb安裝目錄的bin目錄下,運(yùn)行 mongorestore -d acltest acltest.dmp/acltest,將數(shù)據(jù)導(dǎo)入acltest表
2.安裝依賴(lài)包:npm install
3. 運(yùn)行:npm start
4.在瀏覽器輸入: http://localhost:3000(用戶名/密碼:admin/admin 或 user/123)
部分截圖



接口文檔
資源相關(guān):
1.保存資源樹(shù)
2.獲取資源列表
角色相關(guān):
1.添加角色
2.修改角色
3.查詢角色列表
4.刪除角色
4.查詢角色詳情(含角色的權(quán)限列表)
用戶相關(guān):
1.用戶登錄
2.用戶退出
3.添加用戶
4.修改用戶
5.刪除用戶
6.獲取用戶列表
7.查詢用戶詳情(含用戶權(quán)限列表)
8.給用戶添加角色
9.獲取用戶角色
資源
1.保存資源樹(shù)(增加、修改、刪除都是這個(gè)方法)
/api/acl_resource/addArray
參數(shù):
{
list:JSON.stringify(nodeList)
}
返回值:
{
code:"200",
msg:"創(chuàng)建成功!"
}2.獲取資源列表
/api/acl_resource/getList
參數(shù):無(wú)
返回值:
{
"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": "首頁(yè)",
"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": "經(jīng)適房",
"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": "經(jīng)適房首頁(yè)",
"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": "經(jīng)適房歷史",
"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": "對(duì)賬單",
"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": "對(duì)賬單首頁(yè)",
"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": "對(duì)賬單管理",
"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": "系統(tǒng)管理",
"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:獲取角色列表
參數(shù):無(wú)
返回值:
{
"code": "200",
"msg": "獲取詳情成功",
"result": [
{
"name": "經(jīng)適房用戶",
"createdAt": "2017-05-26T09:49:22.361Z",
"updatedAt": "2017-05-26T09:49:22.361Z",
"id": "27aab6d9-325c-4c88-be4a-5da516dc9613"
},
{
"name": "對(duì)賬單用戶",
"createdAt": "2017-05-26T09:52:15.061Z",
"updatedAt": "2017-05-26T09:52:15.061Z",
"id": "ba306957-9c80-4abb-89fd-17be828dd5f5"
},
{
"name": "對(duì)賬單管理員",
"createdAt": "2017-05-26T09:52:26.914Z",
"updatedAt": "2017-05-26T09:52:26.914Z",
"id": "fc154424-2264-4de9-9a7c-1b1df048f802"
},
{
"name": "超級(jí)管理員",
"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
參數(shù):
{
id:xxx,
name:xxx,
}
返回值:
{
code:"200",
msg:"修改成功!",
result:data.update
}3.查詢角色詳情(含角色的權(quán)限列表)
/api/acl_role/getOne
參數(shù):
id:27aab6d9-325c-4c88-be4a-5da516dc9613
返回值:
{
"code": "200",
"msg": "獲取詳情成功",
"result": {
"info": {
"name": "經(jīng)適房用戶",
"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刪除該角色和資源的關(guān)系removeAllow、刪除角色removeRole
參數(shù):
{
id:xxx,
}
返回值:
{
code:"200",
msg:"刪除成功!",
result:result
}5.給角色添加資源
/api/acl_role/allow
① 刪除角色和資源的關(guān)系acl.removeAllow
② 給角色和資源添加關(guān)系acl.allow
參數(shù):
{
role:xxx,
resources:xxx
}
返回值:
{
code:"200",
msg:"成功!"
}用戶相關(guān):
1.用戶登錄
/api/acl_user/login
參數(shù):
{
account:xxx,
password:xxx
}
返回值:
{
code:200,
msg:"登錄成功"
}
{
code:400,
msg:"密碼錯(cuò)誤"
}
{
code:400,
msg:"賬號(hào)不存在"
}2.用戶退出
/api/acl_user/logout
參數(shù):{}
返回值:
{
code:200,
msg:"退出成功!"
}3.添加用戶
/api/acl_user/add
參數(shù):
{
name:xxx,
account:xxx,
password:xxx
}
返回值:
{
code:"200",
msg:"創(chuàng)建成功!",
result:data.save
}4.修改用戶
/api/acl_user/update
參數(shù):
{
id:xxx,
name:xxx,
account:xxx,
password:xxx
}
返回值:
{
code:"200",
msg:"修改成功!",
result:data.save
}5.查詢用戶詳情(含用戶權(quán)限列表)
/api/acl_user/getOne
① db獲取用戶信息
② acl獲取用戶權(quán)限allowedPermissions
參數(shù):
{
id:xxx,
name:xxx,
account:xxx,
password:xxx
}
返回值:
{
code:"200",
msg:"修改成功!",
result:data.save
}6.獲取用戶列表
/api/acl_user/getList
參數(shù):
{
}
返回值:
{
"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刪除用戶角色關(guān)系removeUserRoles、刪除用戶removeUser
參數(shù):
{
id:xxx
}
返回值:
{
code:"200",
msg:"刪除成功!",
result:result
}8.獲取用戶權(quán)限
/api/acl_user/allowedPermissions
參數(shù):
userId:xxx
resources:xxx
返回值:
{
code:"200",
msg:"成功!",
result:result
}9.給用戶添加角色
/api/acl_user/addUserRoles
① 獲取用戶所有角色acl.userRoles、刪除用戶所有角色acl.removeUserRoles
② 添加新的角色acl.addUserRoles
參數(shù):
userId:xxx
roles:xxx
返回值:
{
code:"200",
msg:"成功!",
result:result
}10.給用戶添加角色
/api/acl_user/userRoles
① 獲取用戶所有角色acl.userRoles
參數(shù):
userId:xxx
返回值:
{
code:"200",
msg:"成功!",
result:result
}以上是“nodejs中如何搭建express權(quán)限管理系統(tǒng)”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)頁(yè)名稱(chēng):nodejs中如何搭建express權(quán)限管理系統(tǒng)
文章網(wǎng)址:http://chinadenli.net/article6/ipdeig.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、外貿(mào)建站、品牌網(wǎng)站設(shè)計(jì)、App設(shè)計(jì)、商城網(wǎng)站、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)