领域驱动结合RBAC权限系统设计
2023-11-07 11:19:08 1 举报
领域驱动结合RBAC,灵活可配的权限系统设计
作者其他创作
大纲/内容
聚合是相关的对象的集合,在业务逻辑上具有一致性和完整性。聚合根是聚合中的一个特殊实体,它是聚合的入口点和代表。聚合根负责维护聚合内部的一致性和完整性,并提供对聚合内部对象的访问聚合根具有以下特征:- 聚合根是聚合的唯一入口点,外部对象只能通过聚合根来访问聚合内部的其他对象。- 聚合根负责保护聚合内部对象的一致性和完整性,它定义了聚合内部对象之间的关系和约束。- 聚合根可以包含其他实体和值对象,但其他实体和值对象不能独立存在,它们只能通过聚合根进行访问
权限3
权限系统设计
M:N聚合
财务角色
角色权限继承关系:子角色可以继承父角色的所有权限,角色1继承了角色2的所有权限。角色互斥:同一用户不能分配到一组互斥角色集合中的多个角色,互斥角色是指权限互相制约的两个角色案例:财务系统中一个用户不能同时被指派给会计角色和审计员角色基数约束:一个角色被分配的用户数量受限,它指的是有多少用户能拥有这个角色。例如:一个角色专门为公司 CEO 创建的,那这个角色的数量是有限的先决条件角色:指要想获得较高的权限,要首先拥有低一级的权限。例如:先有副总经理权限,才能有总经理权限运行时互斥:例如,允许一个用户具有两个角色的成员资格,但在运行中不可同时激活这两个角色
资源(实体)
+ 资源名称:char+ 资源编码:char+ 最后修改时间:datetime... ...
+ 获取资源信息()+ 添加/编辑资源()... ...
用户
角色权限继承、互斥、约束
用户4
菜单(实体)
+ 菜单名称:char+ 菜单编码:char+ 上级菜单编码:char+ 最后修改时间:datatime... ...
+ 获取菜单信息()+ 添加/编辑菜单().... ...
文件(实体)
+ 文件名:char + 文件编码:char+ 最后修改时间:datetime... ...
+ 获取文件信()+ 添加/编辑文件()... ...
权限(实体)
+ 权限名称:char+ 权限编码:char+ 最后修改时间:datetime... ...
+ 获取操作信息()+ 添加/编辑操作()... ...
角色/岗位(实体)
+ 角色/岗位名称:char+ 角色编码:char+ 最后修改时间:datetime... ...
+ 获取角色拥有权限()+ 添加/编辑角色()... ...
用户/员工(聚合根)
+ 用户编码:char+ 用户名称:char+ 密码:char+ ... ...+ 最后修改时间:datatime
+ 用户校验()+ 获取用户归属部门()+ 获取用户拥有角色()+ 获取用户拥有权限()+ 添加/编辑用户()... ...
用户3
审计日志
+ 角色/岗位:char+ 用户员工:char+ 被操作实体名:char+ 操作名称:char... ...
+ 排序+ 查询+ 备份导出... ...
用户1
权限4
部门(实体)
+ 部门名称:char+ 部门编码:char+ 上级部门编码:char+ 最后修改时间:datetime... ...
+ 获取部门信息()+ 添加/编辑操作()... ...
权限1
角色
角色1
权限
用户2
1:N关联
不能同时拥有财务和出纳角色
操作(实体)
+ 操作名称:char+ 操作编码:char+ 最后修改时间:datetime... ...
+ 获取操作信息()+ 添加/编辑操作()... ...
权限2
出纳角色
0 条评论
下一页