我需要检查我在网站上访问的每个页面的条件。
基本上,用户帐户是有时间限制的,如果用户帐户已过期,我需要将他们重定向到更新页面,这样他们可以登录系统但只能访问更新页面。
我可以只创建一个函数并在每个控制器的每个操作上调用它,但这没有任何意义,我也可以对引导程序进行一些黑客攻击,但这似乎也不是正确的解决方案。
我怎样才能以正确的方式做到这一点?或者也许引导程序是正确的方法?
我需要检查我在网站上访问的每个页面的条件。
基本上,用户帐户是有时间限制的,如果用户帐户已过期,我需要将他们重定向到更新页面,这样他们可以登录系统但只能访问更新页面。
我可以只创建一个函数并在每个控制器的每个操作上调用它,但这没有任何意义,我也可以对引导程序进行一些黑客攻击,但这似乎也不是正确的解决方案。
我怎样才能以正确的方式做到这一点?或者也许引导程序是正确的方法?
我认为实现这一点的最佳方法是添加Zend_Controller_Plugin_Abstract
到您的应用程序并在方法中实现逻辑preDispatch
。
您将能够使用 Redirector 助手进行检查并重定向用户。
$redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector'); $redirector->gotoSimpleAndExit('myaction', 'mycontroller', 'mymodule');
一般来说 - 因为我缺乏 Zend 的知识 - 我会说身份验证层/类/任何放置这个逻辑的地方。
我假设有一个集中的地方可以检查用户会话的有效性。您可以轻松地将这个额外条件添加到这个地方。如果您以不同的方式维护访问控制,则引导程序可能会更好。
您的选择总是有限的,因为您的应用程序可能有 1 个单点访问,或者在呈现用户请求的页面之前,每个请求至少要经过有限数量的类。
注意不要过于严格地执行这些条件;例如,确保 API 请求(如果存在)不会被转发到续订页面。