我正在PHP Phalcon中实现一个中型Web应用程序,其中包含可公开访问的URL和一些只能在用户通过身份验证时才能访问的URL。 Django提供装饰器(login_required),如果未经过身份验证,则会将用户重定向到登录页面。在Phalcon中以最少量的代码重复实现类似功能的最佳方法是什么。我探讨了以下选项:
非常感谢任何帮助。
PS:我是Phalcon的新手,曾经在Django有过一些经验。
答案 0 :(得分:2)
大多数时候,我基于#2和控制器/方法上的注释实现此功能。我宁愿创建\Phalcon\Mvc\User\Plugin
扩展,在beforeExecuteRoute
期间检查(使用会话)访问者是否完全通过身份验证,以及(带注释)是否有权访问当前操作@controller。提供了相当大的灵活性,但有一个主要缺点 - 如果动作转发$dispatcher->forward()
,它可能会运行几次,但在非公共CRM中非常必要。
根据我的实践,我认为最简单的方法是将项目分为两个模块:后端和前端。让所有公共控件都可以在前端部分访问,您将在后端模块中拥有需要身份验证的控制器。这样就可以根据列出的任何选项创建一个性能认证,将您的公共控制器与您的问题隔离开来。
基本上你的问题是基于意见的,你也列出了几乎所有可能的方法。这只是一个品味或轻松的问题,你的实施将是什么。