问题描述
本人对系统权限设置这一块不是很有经验,现在项目中遇到了一点问题,想寻找一些建议和解决方法。现有的系统中,权限管理采用的是用户,角色,权限,权限中给角色分配了系统的菜单,然后不同的用户分配不同的角色,这样可以保证不同的用户访问不同的功能菜单,这个是可以做到的,但是现在遇到了一个问题:系统中多个企业,企业下有人员、终端等信息需要管理,不同的企业有不同的企业代码和账号,比如A企业代码为01,账号为admin01,B企业代码为02,账号admin02,我在用A企业的账号登录时如何保证系统中只显示A企业相关的人员和终端信息,如何保证将企业B的信息过滤掉呢??目前我能想到的方式就是在每种信息进行查询时都加一个企业代码的查询,比如是企业A登陆,那么,进入系统后,所有的信息查询和显示都需要加一个01代码的where条件查询来保证只显示企业A的信息。我觉得这种方式很麻烦,应该是有其他的方式来实现的,只是自己开发经验不足,想不到好的方式,希望能找到比较有效的解决方案,多谢!
解决方案
解决方案二:
不是几句话可以说清楚,这个和权限也没有关系google多租户架构设计
解决方案三:
引用1楼caozhy的回复:
不是几句话可以说清楚,这个和权限也没有关系google多租户架构设计
多谢提供思路
解决方案四:
数据库里是如何区别a企业和b企业的数据的?最直接有效的方法就是在where的时候加上条件至于在什么时候加是个问题...需要好好规划下
解决方案五:
引用3楼laiyongxin的回复:
数据库里是如何区别a企业和b企业的数据的?最直接有效的方法就是在where的时候加上条件至于在什么时候加是个问题...需要好好规划下
其实企业A和企业B的数据是根据企业编码来标识的,我也只能想到这个方法,但是觉得这个确实很繁琐。刚才看了一下多租户架构,发现有独立的数据库进行存储,感觉对现有的系统改变有很大
解决方案六:
顶起,继续求方案
解决方案七:
最好的方案还是需要你自己去权衡程序中处理是成本最小的独立数据库是隔离级别最高的方式,成本比较高还有一种折衷的方式,就是共享数据库,但是不共享数据架构。数据架构和用户是相互独立的,架构是数据对象的命名容器,一个用户可以拥有多种架构(像通用的权限可以设置成共享架构),这种方式需要对数据库的设计非常熟悉
解决方案八:
再怎么区分关系表上最小颗粒永远是用户和权限用户上的角色企业,权限上的权限包都不要去考虑
解决方案九:
我觉得你有点概念不清什么叫A企业的账号,B企业的账号?一个账号应该对应一个用户,而不是一个企业还有,你应该引入用户组的概念给用户组添加用户,再给用户组分配权限而不是每添加一个用户都要重新分配一次权限
解决方案十:
引用7楼baxi52的回复:
再怎么区分关系表上最小颗粒永远是用户和权限用户上的角色企业,权限上的权限包都不要去考虑
您好,能说详细点吗,理解起来不是很清晰
解决方案十一:
引用8楼Z65443344的回复:
我觉得你有点概念不清什么叫A企业的账号,B企业的账号?一个账号应该对应一个用户,而不是一个企业还有,你应该引入用户组的概念给用户组添加用户,再给用户组分配权限而不是每添加一个用户都要重新分配一次权限
您好,您说的也是对的,我这里指的A企业的账号对应的就是一个用户,指代的就是一个企业用户,这个企业用户进去后所有的数据就应该是该企业的数据,而不该另外一个企业的数据,就是需要这样的一个信息过滤的过程。