我在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)而无需登录?谢谢!
答案 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。