开门见山--我有一个Symfony 1.3/Propel 1.4项目。我有一个模块,它通过is_secure: true
在自己的security.yml
中进行保护。我希望这个模块不仅可供超级管理员访问——我正在使用sfGuardPlugin
符号插件。该模块位于backend
应用程序中。
我想让具有type
属性任何值的用户都可以访问该模块。该网站的普通用户有NULL
,其余的都有某种价值。当我将安全指令更改为is_secure: false
(只是为了测试它)时,我会转到/admin
,并与具有一些type
的用户一起登录,我会被正确重定向到/admin/purchases
(唯一的非安全backend
模块),但会出现安全错误消息——"您无权显示此页面"或类似的内容。
由于我对sfGuardPlugin
(以及Symfony的总体安全性)不太熟悉,我想知道如何做到这一点。
请参阅有关操作安全性的文档。
使用sfGuardPlugin中的组权限为您选择的用户自动广告凭据(请参阅sfGuardPlugin的额外文档,以了解插件如何将用户组和权限转换为凭据)
如果您不想中继security.yml凭据,您也可以在操作中处理此问题:
public function executeIndex($request){
if(!$this->getUser()->hasGroup('desired-group')){
$this->getUser->setFlash('message', 'You do not have access to show this page');
return $this->redirect('admin/purchases');
}
// more logic here
}
如果这适用于模块的更多操作,则可以在DRY(不要重复…)的情况下使用preExecute()方法
只要您为每个用户都拥有正确的凭据。在后端模块中security.yml文件你可以这样做:
all:
credentials: [[admin, developer]]
或者你可以采取单独的行动:
requestView:
credentials: [[supporter, admin, developer]]