Symfony:为某些类型的用户取消安全后端模块。怎么样?

时间:2011-05-25 07:37:11

标签: php security symfony1 propel

直截了当 - 我有一个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的一般安全性)不太熟悉,所以我想帮助我如何做到这一点。

3 个答案:

答案 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]]