【问题标题】:Securing a whole Controller in Symfony with sfGuard?使用 sfGuard 保护 Symfony 中的整个控制器?
【发布时间】:2011-07-29 09:50:36
【问题描述】:

我正在查看 sfGuard 和 Symfony 的有关安全性的文档。但我找不到任何关于保护整个控制器的地方。只有所谓的动作安全。

我尝试使用preExecute 方法调用forward404Unless($this->getUser()->hasGroup('admin')),但它不起作用。

是否可以使用 security.yml 和 sfGuard 来保护我在控制器中的操作?或者在 symfony 中有这样做的做法吗?编辑我必须创建的每个控制器都将是一件麻烦事,以创建将来可能会改变的自定义安全性。

谢谢。

【问题讨论】:

    标签: php symfony1 controller action sfguard


    【解决方案1】:

    symfony 使用级联配置模式,允许您以更可重用和实用的方式配置所有项目/应用程序/模块/操作。随着安全发生同样的事情,您可以使用 security.yml 来定义访问限制。

    如果您在 app 文件夹中创建一个 security.yml(即 $sf_root/app_name/config/security.yml)并指定如下内容:

    default:
      is_secure:true
    

    默认情况下,它将使您的所有应用程序安全(用户必须登录),允许您在适当时覆盖。假设文件模块有一个需要管理员凭据的操作“下载”,但具有“通用”和“管理员”凭据的用户可以使用所有其他操作,因此您必须在 $sf_root/ 创建一个 security.yml apps/app_name/modules/file/config/ 并定义:

    all:
      credentials: [[ common , administrator]]
    
    download:
      credentials: [ administrator ]
    

    有关安全和高级凭据的更多信息,请查看Action Security 上的 symfony 页面

    【讨论】:

      【解决方案2】:

      你可以像这样使用security.yml

      all:
        credentials: [admin]
      

      不过,我不确定是否可以与团队合作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-02-25
        • 2014-04-23
        • 1970-01-01
        • 2012-01-29
        • 2016-05-08
        • 1970-01-01
        • 2011-09-15
        • 1970-01-01
        相关资源
        最近更新 更多