【问题标题】:Symfony security - control which routes are accesibleSymfony 安全性 - 控制哪些路由可以访问
【发布时间】:2012-04-23 12:10:41
【问题描述】:

我正在我的 symfony 应用程序中实现一个向导式的进程。它还有用于“返回”和“下一步”的附加按钮,并且我可以控制在提交每个表单后将用户定向到哪些页面。

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

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

【问题讨论】:

  • 我认为您应该使用 filter 将用户转发到向导。

标签: symfony1 symfony-1.4


【解决方案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
    

【讨论】:

  • 谢谢肯尼 - 这正是我所需要的。
猜你喜欢
  • 1970-01-01
  • 2023-01-27
  • 2021-03-11
  • 1970-01-01
  • 1970-01-01
  • 2012-10-03
  • 2019-02-05
  • 2016-04-23
  • 1970-01-01
相关资源
最近更新 更多