多用户数据隔离表结构设计策略

问题与背景

web系统的设计中,往往都会遇到权限问题,权限问题,最起码需要做到3个级别,模块级别,功能级别,数据级别。模块级别粒度是最粗的,只需要在五表权限模型中的权限表,设置为模块的访问权限即可。功能级别粒度会细一些,主要是针对模块中的功能进行选择性开放。数据级别是最高的,实现了完全的基于权限的数据隔离,通俗点说就是用户只能看到自己的数据,无法看到别人的数据。本文章主要针对多用户数据隔离的场景进行设计。

经验总结

先来梳理一下表结构设计,想要实现多用户数据隔离的表结构设计,这里在五表权限的基础上,新增了一张工作空间表。
用户表

字段解释
id主键
username姓名

角色表

字段解释
id主键
rolename角色姓名

权限表

字段解释
id主键
authname权限名称

工作空间表

字段解释
id主键
spacename空间名称

用户角色关联表

字段解释
id主键
user_id用户id
role_id角色id

角色权限关联表

字段解释
id主键
auth_id权限id
role_id角色id

空间用户关联表

字段解释
id主键
user_id用户id
space_id空间id

使用方式与优势:
1.建立工作空间表之后,所有需要做隔离的数据表,都增加工作空间外键,跟工作空间表关联。用户登录之后,选择工作空间进行数据的管理。
2.为什么不直接跟用户挂钩呢?web系统中往往会出现领导看下属数据的场景,工作空间一方面可以跟用户自己挂钩,还可以跟用户的领导挂钩,数据的可见性有了很大的灵活度。
3.为什么不跟角色挂钩?还是同样的原因,挂在角色上,粒度太粗了,不灵活。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值