Nest.js从0到1搭建博客系统---服务端基于RBAC设计权限系统(9)

311 阅读4分钟

服务端基于RBAC设计权限系统

RBAC是什么?

Role-Based Access Control,中文意思是:基于角色(Role)的访问控制。是一种常用的权限控制系统,它通过将用户分配到不同的角色中,并为每个角色授予一组特定的权限,来实现对用户访问资源的控制

RBAC 的好处

  • 简化权限管理:RBAC 将权限与角色进行绑定,用户只需被分配合适的角色,即可自动获得相应的权限,简化了权限的管理与维护。
  • 提高灵活性:RBAC 允许动态地添加、修改和删除角色,使得权限管理更加灵活,能够快速适应业务变化。
  • 方便权限审计:RBAC 通过角色对权限进行分组,使得权限的审计和监控更加方便,可以对角色的权限进行集中管理。
  • 促进安全:RBAC 将权限控制逻辑与业务逻辑分离,降低了权限控制的复杂性,从而提高了系统的安全性。
  • 提高员工效率:RBAC 可以根据员工的职责和需求分配合适的角色,使得员工能够更方便地访问所需的资源,提高工作效率。

数据库表设计

数据库表ERP图

image.png

sys_user 用户信息表

字段类型默认注释
id  (主键)bigint-用户ID
business_idvarchar(100)-用户业务ID
usernamevarchar(80)-用户名
nicknamevarchar(80)-用户昵称
avatarvarchar(255)-头像地址
emailvarchar(255)-邮箱
addressvarchar(255)-地址
phone_numbervarchar(11)-手机号码
saltvarchar(200)-
passwordvarchar(100)123456密码
statustinyint(0)1状态: 1-有效,0-禁用
create_byvarchar(30)-创建者
create_timetimestamp(6)-创建时间
update_byvarchar(30)-更新者
update_timetimestamp(6)-更新时间
remarktext-备注

sys_menu 菜单表

字段类型默认注释
id  (主键)bigint-菜单ID
menu_namevarchar(80)-菜单名称
menu_typechar(1)-菜单类型:D-目录, M-菜单, B-按钮
iconvarchar(100)-菜单图标
parent_idbigint(0)-父级菜单ID
order_numint(0)0排序
route_namevarchar(80)-前端路由名称
pathvarchar(255)-路由地址
queryvarchar(255)-路由参数
componentvarchar(255)-组件路径
permissionvarchar(255)-权限标识
breadcrumbtinyint(1)1面包屑:0-不显示在面包屑, 1-显示
is_keepalivetinyint(1)1缓存:0-是, 1-否
is_external_linktinyint(1)1外链:0-是, 1-否
affixtinyint(1)0固定到标签栏:0-不固定到标签栏, 1-固定
visibletinyint(1)1菜单状态:0-显示, 1-隐藏
statustinyint(0)1状态: 1-启用,0-禁用
create_byvarchar(30)-创建者
create_timetimestamp(6)-创建时间
update_byvarchar(30)-更新者
update_timetimestamp(6)-更新时间
remarktext-备注

sys_role 角色表

字段类型默认注释
id  (主键)bigint-角色ID
role_namevarchar(80)-角色名称
role_valuevarchar(100)-角色值
order_numint(0)0排序
statustinyint(0)1状态: 1-启用,0-禁用
create_byvarchar(30)-创建者
create_timetimestamp(6)-创建时间
update_byvarchar(30)-更新者
update_timetimestamp(6)-更新时间
remarktext-备注

sys_user_role 用户和角色关联表

字段类型默认注释
id  (主键)bigint--
user_id bigint-用户ID
role_id bigint-角色ID

sys_role_menu 角色和菜单关联表

字段类型默认注释
id  (主键)bigint--
role_id bigint-角色ID
menu_id bigint-菜单ID

sys_dept 部门表

字段类型默认注释
id  (主键)bigint-部门ID
dept_namevarchar(80)-部门名称
leadervarchar(80)-部门负责人
parent_idbigint(0)-父级部门ID
order_numint(0)0排序
statustinyint(0)1状态: 1-启用,0-禁用
create_byvarchar(30)-创建者
create_timetimestamp(6)-创建时间
update_byvarchar(30)-更新者
update_timetimestamp(6)-更新时间
remarktext-备注

sys_user_dept 用户和部门关联表

字段类型默认注释
id  (主键)bigint--
user_id bigint-用户ID
dept_id bigint-部门ID

接口

  • 接口已完成一部分,后续根据需求会完成完善更多接口,需要查看源码可以关注github

image.png

github

项目地址:nest_vhen_blog