我熟悉为我们正在开发的基于 Web 的管理应用程序验证用户身份的一大堆方法,甚至熟悉各种用于监控授权的技术...
但是,我想问你的是,你会如何推荐我实现一个提供以下功能的细粒度访问控制机制:
- 用户属于“角色”或“组”,例如“销售员”、“计划”等。
- 管理菜单系统仅显示具有与用户角色相关的功能的“页面”
- 这些页面中的特定功能有限制 - 例如,在“新预订”页面上,“销售人员”用户可以发布“仅在未来”的预订,而在“编辑预订”页面上可以编辑“一个”预订从现在开始的一周'。但是,可能允许“计划”用户追溯“最多一周前”的预订并编辑他们自己“任何时间段”的预订,但其他人的预订只能“到明天”...
我知道我可以实现一个基本的基于角色的系统来满足 1...我觉得我应该将整个应用程序分成代码块,每个代码块都有自己的 objectID-permissionID 关系,这样我就可以扫描查看哪些对象可用的权限数据库 - 这对我的第 2 项有帮助。
关于如何构建表单控件的任何想法,例如,对于“销售”用户只显示 future 的日期(但对于计划用户显示最多“一周前”的日期),然后以某种方式将其与POST 解析器中检查日期是否确实在预期范围内的行?
我一直在想我应该将每个代码块保存到数据库中,然后有一个对象表根据权限表动态构建代码,这样服务器上唯一的"file"就是数据库连接文件!
欢迎提出任何想法...(即使您的背景不是 php/MySQL)
Zed Shaw 在 CUSEC 的演讲中谈到了为什么“ACL 已死”- http://vimeo.com/2723800
最佳答案
警告,前面有很多 Zend Framework!
您可以使用 Zend_Acl 轻松处理 1. 和 2.和 Zend_Navigation .
对于第 3 种情况,您将不得不查询模型中的 ACL 对象并手动执行大量操作。您也可以将 Zend Framework 用于表单,并根据用户角色权限包括特定的表单元素验证器。
编辑:
如果您不想走 ZF 路线,您至少可以看看 ZF 中是如何处理 ACL 的。
关于php - 细粒度的访问控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1517580/