用sfGuard保护Symfony中的整个控制器?

时间:2011-07-29 09:50:37

标签: php symfony1 controller action sfguard

我正在查看有关安全性的sfGuard和Symfony的文档。但我找不到任何关于安全整个控制器的信息。只有被称为动作安全。

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

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

谢谢。

2 个答案:

答案 0 :(得分:1)

您可以像这样使用security.yml

all:
  credentials: [admin]

我不确定它是否与团队合作。

答案 1 :(得分: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页面