我是使用PHP和MySQL创建Web应用程序的团队的一员。该应用程序将具有多个具有不同角色的用户。该应用程序还将以地理分布的方式使用。因此,我们需要创建一个在以下两个级别运行的访问控制系统:
我需要帮助设计一个可以处理这两种访问控制的系统。点号。 1似乎很简单。但是,如果不对SQL查询中的信息进行硬编码,我完全不知道如何做第2点。
任何帮助将不胜感激。
提前致谢
维纳亚克
答案 0 :(得分:12)
(来源:epsi.pl)
说明调用顺序的序列图:
(来源:epsi.pl)
I blogged about this solution,不幸的是它都是波兰语,但你可能会发现一些代码和图表。我可以说,实现不是小菜一碟,但在性能方面,与列表中每个元素的迭代访问检查相比,它是一个冠军。此外,上面的基础结构不仅处理列表中的一种类型的项目。只要列表中的项目实现IAuthorizable
界面,它就可以在访问不同列表时使用,无论是城市,国家/地区,产品或文档列表。
答案 1 :(得分:1)
答案 2 :(得分:1)
在我看来,你需要的是:(我将使用国家/州/城市的例子)
对于城市用户,显然只搜索和显示与城市相关的那些与其ID相匹配的记录。但是,对于州或国家级别,搜索与每个城市相关的所有记录,其ID与该国家(或州或您拥有的)相匹配。
所以基本上,每个子组依赖于它上面的组,虽然我没有记错,但我相信你可以使用子查询来完成这个技巧。
答案 3 :(得分:0)
如果你不知道怎么做,我会使用像Zend Framework,CakePHP或Symphony这样的php框架。他们为您完成了繁重的工作,并且已经实施了某种类型的访问控制方案。
答案 4 :(得分:0)
我有类似的构建解决方案,到目前为止我已经决定使用规范和角色,所以实际上一个角色会附加一些特权规范。如果他们都满意,则授予权限,否则 - 它将回退到资源默认访问权限。
我正在寻找已经实施解决方案的人,但似乎没有人这样做。让我们希望它不会失败:)