使用NoSQL Database VS创建ACL模块。 SQL DB

时间:2014-05-21 02:08:27

标签: mysql database permissions acl nosql

我需要为我正在研究的系统编写一个ACL模块。 我以前写了ACL - 但我总觉得它可以更有效率

由于我没有过多地使用NoSQL数据库,并且我认真考虑开始使用它们以达到其优势的目的 - 我想听听您的意见ACL模块是否是一个这种情况的好例子

ACL应包含ARO(访问请求对象 - 例如站点成员),ACO(访问控制对象 - 例如对站点中项目的操作。[例如:查看产品编号2])

两者都应该被分组为树 - 这样我就可以拥有一组成员和一组产品。

我最近的实现使用了一组已定义的权限(每个都有自己的编号),它们通过按位OR操作组合成一个数字来设置ARO的权限级别

例如:如果view = 1, modify = 2, delete = 4和用户#1可以查看和删除对象#3,我们将在数据库中有这一行(在我的情况下是mysql db):

|  user_id   |   object_id   |    level   |
===========================================
|     1      |      3        |      5     |

为了获得用户的完整权限层次结构,我创建了一个递归连接查询(同时指定了支持的最大深度),然后检查了ARO中所有对象的权限定义&# 39;到树根的路径

我现在看到了一种有趣的方法来消除this article

中联接部分的需要

回到我的问题 -

在NoSQL中,数据被保存为对象,这些对象可以是树形数据结构,并且开箱即用#34; - 所以在这样的结构中至少拥有组层次结构似乎更合理

您认为对于最有效和通用的ACL系统来说,更好的解决方案是什么?

0 个答案:

没有答案