我的编程空间,编程开发者的网络收藏夹
学习永远不晚

nodejs中如何搭建express权限管理系统

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

nodejs中如何搭建express权限管理系统

这篇文章主要介绍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)

部分截图

nodejs中如何搭建express权限管理系统

nodejs中如何搭建express权限管理系统

nodejs中如何搭建express权限管理系统

nodejs中如何搭建express权限管理系统 

接口文档

资源相关:

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权限管理系统”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

nodejs中如何搭建express权限管理系统

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

详解nodejs中express搭建权限管理系统

权限管理,是管理系统中的常见组件。通常需要定义资源,把资源调配给用户,通过判断用户是否有权限增删改查来实现。 初衷: 使用express开发过的项目大大小小加在一起也有二十多个了,之前做的各个项目都是独立存在的。最近领导建议说把这些小项目整
2022-06-04

nodejs搭建后台管理系统

一、前言随着互联网的不断发展,各行各业都开始注重数字化、信息化和在线化。而网站开发就是其中的一个重要方面。相信许多朋友已经尝试过使用 PHP、Java、Python 等语言进行开发。但今天我想向大家介绍一下 Node.js,以及如何使用 Node.js 搭建一个后台管理系统。Node.js 是轻量且高效的开源 JavaScript 运行环境,Node.js 与浏览器开发有一个异
2023-05-14

如何搭建云服务器网页访问记录权限管理系统

1.确定需求和技术栈在搭建云服务器网页访问记录权限管理系统之前,需要先明确自己的需求和技术栈。需要考虑的问题包括:需要记录哪些信息,如访问时间、IP地址、访问页面等;需要对访问记录进行哪些操作,如查询、删除、导出等;需要对用户进行哪些权限管理,如添加、删除、修改等;需要使用哪些技术栈,如前端框架、后端语言、数据库等。2.搭建服务器环境在确定了需求和技术栈之后,需要搭建服务器环境。可以选择使用云服务器,...
2023-10-27

Java如何实现权限管理系统

这篇文章主要介绍了Java如何实现权限管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。springboot+mybatis使用面向切面编程(AOP)实现的权限管理系统。
2023-06-22

win10系统管理员权限如何获得

这期内容当中小编将会给大家带来有关win10系统管理员权限如何获得,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Win10系统中的管理员权限在很多地方都用得到,但是很多朋友不知道怎么获得这个权限,下面小编
2023-06-27

MySQL中如何通过循环构建灵活的权限管理系统

在MySQL中,可以通过使用存储过程和循环来构建灵活的权限管理系统。以下是一个简单的示例代码:创建一个存储过程,该存储过程用于循环创建权限表和用户表:DELIMITER //CREATE PROCEDURE create_permissio
MySQL中如何通过循环构建灵活的权限管理系统
2024-04-30

腾讯云服务器怎么搭建节点设置权限管理系统

首先,一个节点管理系统可以帮助用户管理多个云服务器节点,并且确保它们能够协同工作,同时还可以对它们的性能和安全进行监控和管理。节点管理系统可以采用云管理平台(CMP)来实现。CMP是一种开源的云管理平台,它可以实现多个云服务器节点的管理和监控,同时还可以对它们的资源和负载进行管理和调度。其次,一个好的节点管理系统还需要
腾讯云服务器怎么搭建节点设置权限管理系统
2023-10-28

怎么搭建云服务器网页访问记录权限管理系统

设计原则首先,我们需要了解云服务器的设计原则,例如如何控制访问权限、如何防止未经授权的访问、如何记录违规行为等。这些原则可以指导我们设计出符合企业实际需求的云服务器网页访问记录权限管理系统。数据库架构在搭建云服务器网页访问记录权限管理系统时,我们需要考虑如何存储访问日志和访问记录。在设计数据库时,我们需要遵循以下原则:
怎么搭建云服务器网页访问记录权限管理系统
2023-10-28

如何在PostgreSQL中创建用户和管理权限

要在PostgreSQL中创建用户并管理权限,您可以按照以下步骤操作:登录到您的PostgreSQL服务器上打开命令行终端或者使用pgAdmin等图形化工具连接到数据库创建新用户:CREATE USER new_user WITH PASS
如何在PostgreSQL中创建用户和管理权限
2024-04-09

如何使用Django默认的Auth权限管理系统

本文主要介绍了如何使用Django默认的Auth权限管理系统,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-13

Prometheus系统如何实现多租户和权限管理

Prometheus系统可以通过以下方式实现多租户和权限管理:使用Prometheus的基于角色的访问控制(RBAC)功能:Prometheus支持基于角色的访问控制,可以为每个租户定义不同的角色和权限,从而实现多租户和权限管理。管理员可以
Prometheus系统如何实现多租户和权限管理
2024-03-04

云服务器怎么搭建python环境配置系统文件权限管理

创建虚拟环境:在云服务器上创建一个新的环境,可以使用os或者VmwareESXi等管理工具创建。在创建虚拟环境时,需要设置虚拟机的主目录、根目录、用户权限和访问控制列表(ACL)。为虚拟环境用户设置权限:在虚拟环境中创建一个用户,可以为该用户设置不同的权限,如访问虚拟机文件夹、创建自定义脚本等。可以使用Python自带的os或者VmwareESXi管理工具来创建虚拟环境。设置文件权限:可以在虚拟环境中为该用户设置不同的文...
2023-10-27

XP系统怎么新建administrator管理员权限账户

本篇内容主要讲解“XP系统怎么新建administrator管理员权限账户”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“XP系统怎么新建administrator管理员权限账户”吧!  知识点分
2023-06-13

如何建立云服务器端口协议文件权限管理系统

建立云服务器端口协议文件权限管理系统的过程包括以下几个步骤:安装不同的软件和配置不同的端口首先,需要在云服务器上安装需要的软件和配置不同的端口。比如,可以安装防火墙软件、网络安全软件、入侵检测系统等。这些软件和端口可以控制云服务器上的端口,并允许或拒绝特定的服务请求。设置不同的端口根据云服务器的需求,可以在不同的软件和
如何建立云服务器端口协议文件权限管理系统
2023-10-28

Kylin中如何进行权限管理

在Kylin中,权限管理主要涉及到以下几个方面:用户管理:Kylin支持创建多个用户,可以通过用户名和密码进行认证。可以通过以下命令创建用户:bin/kylin.sh org.apache.kylin.rest.service.UserSe
Kylin中如何进行权限管理
2024-03-11

Impala中如何进行权限管理

在Impala中,权限管理是通过使用Apache Sentry进行的。Apache Sentry是一个独立的开源项目,为Hadoop生态系统提供细粒度的权限管理和访问控制。下面是在Impala中进行权限管理的一般步骤:配置Sentry:首
Impala中如何进行权限管理
2024-03-11

编程热搜

目录