在基于ZF的应用程序中创建Admin部分的最佳实践

时间:2009-04-26 01:35:11

标签: php security zend-framework admin

在每个大型应用程序中都有一个ADMIN部分 在这种情况下,当不使用ZF时,我通常会将所有管理员的东西放在一个单独的目录中,并带有额外的安全措施(比如添加基于.htaccess的身份验证和/或第二次登录等)。这也使得在文件树中显而易见的是什么文件。

如何在ZF中实现相同的设计?或者是否有创建管理部分的最佳实践? 我应该在路由器级别执行此操作(如果URL中有“admin”,那么我使用不同的index.php / bootstrap文件....)
我想最简单的只是使用控制器来管理所有管理员,但我有太多的东西。所以我有几个管理控制器与常规app控制器并排。它在我的控制器目录中弄得一团糟 - 哪个控制器是管理员,哪个不是?

3 个答案:

答案 0 :(得分:4)

我已经将其作为module完成了。除了Brett Bender提供的模块链接外,请参阅我提供的链接中的第12.3.2.2节。

答案 1 :(得分:0)

我通常为整个管理系统创建一个单独的“应用程序”文件夹 - 包含自己的控制器和视图目录以及静态内容的公共目录。主管部门通常对访问管理等关键事项有不同的要求,并且可能在许多其他方面与实际应用有所不同。因此,我认为完全分离源代码是个好主意。但是,有些源代码仍然很常见。示例包括库文件夹和数据库模型。

在决定管理实用程序应该可用的位置时,此方法还为您提供了更大的灵活性。您可以使用apache alias directice将其放在同一域的子目录中,或者将其放在单独的vhost上。这完全取决于你。

答案 2 :(得分:0)

您应该使用带ZF的模块结帐。您可以使用默认模块来包含非管理员资源,并使用管理模块来包含所有管理资源。使用默认模块不会更改当前URL,管理模块URL将显示为server.com/admin/controllername/actionname/params。这将解决您的控制器所有在同一个地方并变得混乱。此外,您可以继承Zend_Controller_Action并在模型中创建Master_Controller以保持共享功能。然后只需创建一个Admin_Controller扩展主控制器以实现共享管理功能,并使管理模块中的每个控制器都成为子类。您可以使用类似的结构来组织其他模块中的共享非管理功能。

Zend Framework - modular directory structure