首頁 > web前端 > js教程 > 主體

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

巴扎黑
發布: 2017-09-16 09:28:01
原創
3462 人瀏覽過

這篇文章主要介紹了詳解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開源權限管理框架參考:#######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

#

以上是nodejs中express搭建權限管理系統詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!