Zend 框架(或使用 Zend_Application 构建的应用程序)是否提供任何持久化 ACL 列表的机制,或者该细节是否留给单个系统/应用程序开发人员?
我在网上看到的大多数示例都涉及在代码中设置 ACL 规则。我很好奇是否有任何标准/首选方法可以将这些规则保存到数据库和/或文件系统中,然后自动加载它们。
Zend 框架(或使用 Zend_Application 构建的应用程序)是否提供任何持久化 ACL 列表的机制,或者该细节是否留给单个系统/应用程序开发人员?
我在网上看到的大多数示例都涉及在代码中设置 ACL 规则。我很好奇是否有任何标准/首选方法可以将这些规则保存到数据库和/或文件系统中,然后自动加载它们。
早晨,
那是框架用户的一部分。我们将 Acl 存储在 .ini 或 .xml 文件中。在复杂的项目中,我们仍然使用数据库表来存储角色和资源。
Zend DevZone 上有一个非常好的例子,用于将 acl 与数据库一起使用。
如果 ACL 复杂但静态,您可以尝试使用 Zend_Cache 缓存 ACL
$cache = Zend_Cache::factory( 'File', 'File',
array( 'automatic_serialization' => true,
'master_file' => 'MyACL.php' ),
array( 'cache_dir' => CACHE_PATH )
));
您可能对来自 Joe Gornick 的 Zend_Application 资源和相应配置感兴趣:http: //gist.github.com/249442
您还没有指定要寻求什么样的持久性。对于会话期限持久性,您可以将您构建的 ACL 注册表(Zend_Acl 对象)存储在会话或 Zend 注册表中。
我还建议在登录时构建它,或者以某种一次性的方式构建它,以避免每个页面的处理超载。