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.获取用户角色
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