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

PHP访问控制系统

如何解决《PHP访问控制系统》经验,为你挑选了1个好方法。

我是使用PHP和MySQL创建Web应用程序的团队的一员.该应用程序将具有多个具有不同角色的用户.该应用程序还将以地理分布的方式使用.因此,我们需要创建一个在以下两个级别运行的访问控制系统:

    控制特定php页面的用户权限,即根据用户的角色提供或拒绝对特定页面(或用户界面元素)的访问.例如:可以允许用户访问"学生"页面,但不允许访问"教师"页面.

    控制特定数据库记录的用户权限,即修改数据库查询,以便仅显示特定记录.例如,对于城市级别的用户,仅显示与用户的特定城市相关的那些记录,而对于国家级别的用户,应显示该国家中所有城市的记录.

我需要帮助设计一个可以处理这两种访问控制的系统.点号.1似乎很简单.但是,如果不对SQL查询中的信息进行硬编码,我完全不知道如何进行第2点.

任何帮助,将不胜感激.

提前致谢

维纳亚克



1> Michał Rudni..:

几个月前我情况类似.我发现像Zend_ACL这样的工具可以很好地检查单个项目的访问级别(或者相当低的数量).当您需要获取允许用户访问的大量项目时,它会失败.我使用Business Delegate模式为这个问题制作了自定义解决方案.BD提供可在特定上下文中应用的业务逻辑.在这种情况下,SQL逻辑已交付并用作subselect中的过滤条件.请参见下图:

替代文字
(来源:epsi.pl)

以及说明调用顺序的序列图:

替代文字
(来源:epsi.pl)

我在博客上写了这个解决方案,遗憾的是它全部都是波兰语,但你可能会发现一些代码和图表.我可以说,实现不是小菜一碟,但在性能方面,与列表中每个元素的迭代访问检查相比,它是一个冠军.此外,上面的基础结构不仅处理列表中的一种类型的项目.只要列表中的项目实现IAuthorizable接口,它就可以在访问不同列表时使用,可以是城市,国家,产品或文档列表.

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