1
imxthd 2021-01-27 09:26:58 +08:00
参考开源框架
|
3
leesam1024 2021-01-27 11:48:37 +08:00
我们是自己实现的。通过自定义注解+拦截器实现。
权限角色分为 基础业务角色(是否可以操作该业务功能。通过 controller 上的自定义注解+注解拦截器实现) 比如管理员、供货角色 资源角色(定义该角色下面可以接触那些业务的更细分数据数据) 用户必须先有基础业务角色后,才能操作该业务角色下面的资源 基础业务角色是程序开发时就定义好,写死的。 资源角色,可以通过管理员动态添加。 1 个用户可以对应多个基础业务角色和资源角色 |
4
hxyCoding 2021-01-27 11:53:59 +08:00
如果只是可视化查询,可以考虑后置屏蔽
|
5
gonethen OP @leesam1024 #3 我想我的问题表述的还是不够具体。其实我想问的重点在于上下级之间的数据权限控制。
比如总后台能看到所有平台的订单;平台管理员只能看自己平台的订单;公司只能看自己公司的订单;员工只能看到自己发布的订单。 |
6
hsluoyz 2021-01-27 12:02:54 +08:00
Casbin 支持多级 RBAC 模型和多租户模型,可以表达你所说的“比如总后台能看到所有平台的订单;平台管理员只能看自己平台的订单;公司只能看自己公司的订单;员工只能看到自己发布的订单。”
|
7
sakasaka 2021-01-27 13:40:45 +08:00
尝试在业务表加入有关权限的标识
|
9
liuxey 2021-01-27 14:05:40 +08:00
即使“数据各不相同”,也要进行梳理分类,比如:全数据权限、总公司权限、分公司权限、部门权限、个人权限
理清楚后就可以根据不同的数据权限做功能 如果理不清楚,理都理不清楚!怎么优雅的了! |
10
THESDZ 2021-01-27 16:15:34 +08:00 1
我对优雅的理解:
1.非侵入的:使用注解,配置,代理模式等 2.无感的,即不破坏现有编程习惯 具体的实现 1.如果使用了通用 mapper 等,可以尝试改造通用 mapper 中代理的实现,如 select 等方法,可以增加额外的<if></if>等 2.使用拦截器,对 sql 进行处理 3.权限无非是参数的获取和使用,将其抽象为接口,具体的实现可以根据实际需求切换 |
11
THESDZ 2021-01-27 16:25:04 +08:00
@gonethen 数据权限使用的数据中不包含逻辑
1 1.1 1.1.1 1.2 如果是 1.1,则传入 1.1,1.1.1 如果是 1,则传入 1,1.1,1.1.1,1.2 全部的情况建议传入所有的,但是也可以特殊判断 目的是,如果有权限应该是显示分配了权限才有 |
12
pigcandance 2021-01-27 16:56:58 +08:00
添加字段 companyId 可以数据隔离
|
13
liuzhaowei55 2021-01-27 18:31:40 +08:00 via iPhone
可以参看阿里云 dms 的审计功能,但应该做不到字段级别的审计,可以把设置字段加密
|
14
uselessVisitor 2021-01-28 08:25:55 +08:00
登录后把 username+部门放在 redis 中,每张表冗余 createBy,写个方法获取用户部门
|
15
tame619 2021-01-28 12:21:37 +08:00 via iPhone
部门分层次,父部门能够查看子部门的信息。角色资源管理后台接口权限。部门管理接口得到的内容。
|