【水文】角色权限设计

发布时间 2023-04-14 22:33:11作者: 夏秋初

参考

备注

本文章思考字段权限的实现,仅仅思考了简单的功能权限与数据权限的实现,建议具体参考上面的引用链接进行学习。

表结构定义

users、rules、roles、user_join_roles 表实现功能权限管理
users、departments、jobs 表实现数据权限管理

  1. users 用户表
字段名 类型 注释
id int ID
name varchar 昵称
age tinyint 年龄
department_id int 所属部门ID
job_id int 所属职务ID
address varchar 地址(涉及隐私,普通员工禁止查看)
created_at datetime 创建时间
  1. departments 部门表
字段名 类型 注释
id int ID
name varchar 部门名称
department_id int 所属部门ID
created_at datetime 创建时间
  1. jobs 职务表
字段名 类型 注释
id int ID
name varchar 职务名称
data_auth tinyint 数据权限(1.本人,2.本部门和本人,3.本部门、同级部门和本人),4.本部门、本人和本部门下所属部门,5. 本部门、本人、同级部门下属部门和本部门下所属部门,6.全部数据
created_at datetime 创建时间
  1. rules 规则表
字段名 类型 注释
id int ID
name varchar 规则名称
url varchar 接口地址
request_type varchar 请求类型
unique_id varchar 接口唯一ID(unique_id与id好像冲突了,因为id就是唯一的)
rule_id int 所属规则ID
paramers varchar 字段权限?但是有些接口字段包含关联,所以字段需要再思考下,可以至设置子节点所属父节点的权限字段,子节点自动继承,就实现了字段权限的管理。
created_at datetime 创建时间
  1. roles 角色表
字段名 类型 注释
id int ID
name varchar 角色名称
rule_ids varchar 规则ID列表
created_at datetime 创建时间
  1. user_join_roles 用户关联角色表
字段名 类型 注释
id int ID
user_id int 用户ID
role_id int 角色ID
created_at datetime 创建时间

功能解释

权限: 功能权限、数据权限。

功能权限 (如RBAC)

根据接口去设置权限,如有一个用户接口,那么用户接口包含显示、增加、删除、

数据权限

数据范围:仅本人数据、本人所属部门数据、本人同级部门数据、本人所属部门与部门下属部门的数据、全部数据。
数据字段:HR能查看人员列表中包括职级、薪资等字段,其它角色仅能查看姓名邮箱等字段。