允许在security.yml中对Symfony对象操作进行不安全的访问

时间:2011-10-18 16:00:15

标签: security symfony1 symfony-1.4

我在Symfony 1.4.13中有一个特定的模块,默认设置在security.yml文件中。我有一个特定的对象操作,我希望任何人都可以访问(注销用户),但似乎无法找到正确的方法来在YAML文件中找出操作的名称以获得匹配。

具体来说,我有一个project模块,其中包含典型的索引,show,create等操作,以及runReport对象操作(因此操作方法的名称为executeListRunReport )。 security.yml文件如下:

all:
  is_secure: true

index:
  credentials: pm_view

show:
  credentials: pm_view

filter:
  credentials: pm_view

runReport:   # This is the one that is giving me problems
  is_secure: false

我在actions.php中的方法是:

public function executeListRunReport(sfWebRequest $request) {
...
}

这对于登录用户转到project/[idOfObject]/ListRunReport时效果很好。

如何编写security.yml文件以允许任何人访问该操作(例如直接从我手工生成的URL)而无需登录?谢谢!

2 个答案:

答案 0 :(得分:3)

如果你的apps / * / config / security.yml有

default:
  is_secure: true

您可以在模块的security.yml中定义:

index:
  credentials: pm_view

show:
  credentials: pm_view

filter:
  credentials: pm_view   

runReport:
  is_secure: false

从您的模块中删除:

all:
  is_secure: true

答案 1 :(得分:1)

原来问题在于我在security.yml中命名元素的方式(对不起,如果问题不够清楚,表明这可能是原始问题)。

适用于 listRunReport ,因此代码如下:

listRunReport:
    is_secure:false

@arsenik是正确的,因为all:is_secure:true是不必要的,但不幸的是,这并没有解决问题(它可以保留)。

当使用最终被命名为executeListXYZ的列表对象操作时,它必须在security.yml中标记为listXYZ。