直截了当 - 我有一个Symfony 1.3 / Propel 1.4项目。我有一个模块,它通过is_secure: true
保护在自己的security.yml
中。我希望这个模块不仅可以访问超级管理员 - 我正在使用sfGuardPlugin
symfony插件。该模块位于backend
app。
我想让具有type
属性值的用户可以访问该模块。该网站的常规用户在其中有NULL
,其余所有用户都有某种价值。当我将安全指令更改为is_secure: false
(只是为了测试它)时,我会转到/admin
并向拥有type
的用户登录,我已正确地重定向到{{ 1}}(唯一的非安全/admin/purchases
模块),但有安全错误消息 - “您无权显示此页面”或其他内容。
由于我对backend
(以及Symfony的一般安全性)不太熟悉,所以我想帮助我如何做到这一点。
答案 0 :(得分:0)
请参阅documentation有关行动安全的内容。
使用sfGuardPlugin的群组权限自动为您选择的用户提供广告凭据(请参阅extra documentation了解sfGuardPlugin,以了解插件如何将用户组和权限转换为凭据)
答案 1 :(得分:0)
如果您不想继续使用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()方法(不要重复自己......)
答案 2 :(得分:0)
只要您拥有每个用户的正确凭据即可。在你的后端模块中 security.yml文件你可以这样做:
all:
credentials: [[admin, developer]]
或者您可以采取个别行动:
requestView:
credentials: [[supporter, admin, developer]]