【问题标题】: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]
不过,我不确定是否可以与团队合作。