我熟悉一大堆方法来验证我们正在开发的基于Web的管理应用程序的用户,甚至还有各种技术来密切授权……
但是,我的问题是,您如何建议我实现提供以下内容的细粒度访问控制机制:
>用户属于“角色”或“群组”,例如“销售人员”,“计划”等.
>管理菜单系统仅显示具有与用户角色相关的功能的“页面”
>这些页面中的特定功能有限制 – 例如,在“新预订”页面上,“销售人员”用户可以“仅在将来”发出预订,而“编辑预订”页面可以在一周内编辑预订现在’.但是,“规划”用户可能会被允许追溯预订“一周前”并编辑他们自己“任何时间段”的预订,但其他人仅在“直到明天”预订…
我知道我可以实现一个基本的基于角色的系统来满足no.1 …我有一种感觉我应该将整个应用程序拆分成代码块,每个代码块都有自己的objectID-permissionID关系,这样我就可以扫描权限数据库了看看哪些物品是可用的 – 这对我有帮助.
任何想法如何构建表单控件,例如,“销售”用户只显示未来的日期(但显示计划用户的“一周前”日期),然后以某种方式将其与POST解析器检查日期是否实际上在预期范围内?
我已经玩过将每个代码块保存到数据库的想法,然后有一个对象表根据权限表动态构建代码,这样服务器上唯一的“文件”就是数据库连接文件!
欢迎任何想法……(即使你的背景不是php / MySQL)
Zed Shaw在讨论“ACL已经死亡”的原因时,对CUSEC的问题进行了更深入的了解 – http://vimeo.com/2723800
解决方法:
警告,很多Zend Framework领先!
您可以使用Zend_Acl和Zend_Navigation轻松处理1.和2.
对于3号,您将需要查询模型中的ACL对象并手动执行大量操作.您也可以将Zend Framework用于表单,并根据用户角色权限包含特定的表单元素验证器.
编辑:
如果你不想去ZF路线,你至少可以看看如何在ZF中处理ACL.