Symfony安全 - 控制哪些路由可访问

时间:2012-04-23 12:10:41

标签: symfony1 symfony-1.4

我正在symfony应用程序中实现向导式流程。它有“后退”和“下一步”的附加按钮,我可以控制每个表单提交后用户指向的页面。

我想了解一些用户处于向导模式后如何锁定路由的建议,即如果处于向导模式,他们只能访问向导过程中使用的5个页面。如果他们在向导模式下尝试导航到其他路由,则会重定向回到向导所在的最后一条已知路由。

我可以进入每个操作并在向导模式下添加重定向,但这似乎是错误的方法。

1 个答案:

答案 0 :(得分:1)

此处Symfony filter是一个不错的选择。

  • 将myWizardFilter.class.php放在应用程序库文件夹中:

    class myWizardFilter extends sfFilter {
    
        public function execute ($filterChain) {
    
            if ($this->isFirstCall() && $wizardMode && $outsideWizard) {
    
                $controller = $this->getContext()->getController();
                $controller->forward('wizardModule', 'wizardAction');
                throw new sfStopException();            
    
            }
    
            $filterChain->execute();    
        }
    }
    
  • 您必须将$wizardMode替换为您检查的内容,以查看用户是否处于向导模式。
  • 您需要检查路由,以便在用户尝试导航$outsideWizard时仅重定向回向导模式。否则,您将获得重定向循环。
  • 然后将过滤器添加到filters.yml:

    wizard:
      class:   myWizardFilter