当前位置:  开发笔记 > 编程语言 > 正文

如何根据应用程序用户属性限制或过滤数据库访问

如何解决《如何根据应用程序用户属性限制或过滤数据库访问》经验,为你挑选了0个好方法。

我现在考虑的太多了,没有明显正确的解决方案.它可能是一个真正的木树换树木的情况,所以我需要stackoverflow的帮助.

我正在尝试在区域基础上强制执行数据库过滤.我的系统有各种用户,每个用户都被分配到一个区域办事处.我只希望用户能够看到与其区域办事处相关的数据.

简单地说我的应用程序是:Java App - > JPA(hibernate) - > MySQL

数据库包含来自所有区域的对象,但我只希望用户能够操作来自其自己区域的对象.我已经考虑过以下几种方法:

1)修改所有数据库查询,以便他们从tablex中读取select*from region ="myregion".这很讨厌.它与JPA不兼容,例如entitymanager.find()方法只接受主键.当然,我可以去当地,但我只需要错过一个选择声明,我的安全性就会被拍摄

2)使用mysql代理过滤结果.有点时髦,但是mysql代理只是看到原始调用,并不真正知道它应该如何过滤它们(即发出此请求的用户属于哪个区域).好的,我可以为每个地区启动一个代理,但它开始变得有点凌乱..

3)为每个区域使用单独的模式.是的,简单,我使用spring,所以我可以使用RoutingDataSource通过正确的数据源(每个模式1个数据源)路由请求.当然,现在问题就在某个地方,我想要按区域和其他类别进行过滤.ohps.

4)ACL - 对此不太确定.如果a从tablex做了select*; 它会悄悄地过滤掉我无法访问的对象,还是会抛出一堆访问异常?

但我对此有太多考虑吗?这似乎是一个非常普遍的问题.必须有一些简单的解决方案,我太愚蠢了.我确信它会接近/或在数据库中,因为你想尽可能地过滤到源,但是什么?

不希望被勺子 - 任何链接,关键字,想法,商业/开源产品的建议将非常感谢!! 谢谢.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有