组和人员角色权限控制
- 在一般的角色权限控制里,只有用户拥有角色,权限的控制也是基于用户的角色。在有些企业并不是这样的,往往一个组织也有相应的权限,这时候角色的权限控制就需要通过成员所在组的角色和人员的角色一起去控制。
- 虽然说组也有角色,但是最终都是实施在个人上,这里一般有两个实现思路
- 在把角色授予给组的时候,同时授予给组的每一个成员(在组新增成员时也要执行一次,推出组织时也要做处理),在鉴权的时候判断用户的所有角色,按照角色类型做一个取舍规则
- 只在鉴权的时候,取出当前人员所在组的角色,按照角色类型做一个取舍规则(如果存在切换机构的情况,这种好,可以通过token里面的roleId做判断即可)
角色权限控制的数据库设计
下面的几个权限表可能有点难以理解,因为他们从数据库上看只是定义了菜单实体,接口实体,数据库过滤字段实体。(●’◡’●)其实这之所以叫做权限表,只是这几张表的内容(实体)需要控制,不是每个角色都可见的
- menu 菜单权限表,菜单类型可以为菜单和按钮
- scope_api 接口权限表,可以关联menuId
- scope_data 数据权限表,可以关联menuId
- role 角色表,角色类可以是用户和组
- role_entity 角色实体关联表
- role_menu 角色可见的菜单
- role_scope 角色拥有api的权限或要过滤的数据权限
- top_menu 顶部菜单,和setting一起控制一个顶部菜单对应的左侧菜单
- top_menu_setting 顶部菜单拥有的菜单