Php Symfony:为某些类型的用户解除后端模块的安全。怎样

Php Symfony:为某些类型的用户解除后端模块的安全。怎样,php,security,symfony1,propel,Php,Security,Symfony1,Propel,直截了当地说——我有一个Symfony 1.3/Propel 1.4项目。我有一个模块,它通过本身的security.yml中的is\u secure:true进行保护。我希望不仅超级管理员可以访问这个模块——我正在使用sfGuardPluginsymfony插件。该模块位于后端应用程序中 我想让具有类型属性任何值的用户可以访问该模块。网站的普通用户在那里有NULL,其余的都有某种值。当我将安全指令更改为is\u secure:false(只是为了测试它),然后我转到/admin,并与具有一些类

直截了当地说——我有一个Symfony 1.3/Propel 1.4项目。我有一个模块,它通过
本身的
security.yml
中的is\u secure:true
进行保护。我希望不仅超级管理员可以访问这个模块——我正在使用
sfGuardPlugin
symfony插件。该模块位于
后端应用程序中

我想让具有
类型
属性任何值的用户可以访问该模块。网站的普通用户在那里有
NULL
,其余的都有某种值。当我将安全指令更改为
is\u secure:false
(只是为了测试它),然后我转到
/admin
,并与具有一些
类型的用户登录,我会被正确重定向到
/admin/purchases
(唯一不安全的
后端
模块),但带有安全错误消息--“您没有显示此页面的权限”或类似的内容

由于我对
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
}

如果这对您的模块的更多操作有效,您可以使用preExecute()方法,以防出现干燥(不要重复您自己…)

,只要您为每个用户提供了正确的凭据。在您的后端模块中 security.yml文件您可以执行以下操作:

all:
  credentials: [[admin, developer]]
或者,您可以执行单独的操作:

requestView:
  credentials: [[supporter, admin, developer]]

我当然会看一看,但由于我还是Symfony的新手,如果你能给我画一些伪代码和要接触的文件,我将不胜感激。你知道,当一个新人有一个示例代码要处理时,他会更加自信。;)审阅了文档,但不幸的是,目前它没有涵盖我的场景,即:我已经有一个名为
purchase
后端
模块(它是通过Symfony的管理生成器生成的),我只想从管理级别的安全性中筛选出这个特定模块(或其某些操作)。您链接的文档(第一个链接)不包括
后端
模块案例:-(好的,它被分类了。我懒得一步一步地分享过程,但我做到了。链接文档毕竟有帮助。标记这一点。
后端
只是一个类似于
前端
或任何其他应用程序的应用程序,所以它应该很简单。例如,代码我不知道说什么。我认为一切都将通过
sfGuardPlugin的GUI来完成
,只需在相应的
security.yml
文件中添加一行凭证名称即可。