2012-04-23 58 views
0

我在symfony應用程序中實現了嚮導式過程。它有'後'和'下'的額外按鈕,並且我控制了每個表單提交後用戶指向的頁面。Symfony安全 - 控制哪些路由可訪問

我希望在用戶處於嚮導模式時如何鎖定路由,也就是說,如果在嚮導模式下,他們只能訪問嚮導過程中使用的5個頁面。如果他們嘗試在嚮導模式下導航到其他路由,則會重定向到嚮導所在的最後一個已知路由。

我可以進入每個操作並在嚮導模式下添加重定向,但這看起來像是錯誤的方法。

+0

我認爲你應該使用[過濾器](http://www.symfony-project.org/gentle-introduction/1_4/en/06-Inside-the-Controller-Layer#chapter_06_filters)將用戶轉發給嚮導。 – 1ed 2012-04-23 21:55:51

回答

1

A Symfony filter是一個很好的選擇。

  • 把myWizardFilter.class.php在應用程序中lib文件夾:

    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 
    
+0

謝謝Kenny - 這正是我需要的。 – Trevelyan005 2012-04-24 15:32:37