我有一个拥有大量管理生成器的网站,可以处理各种各样的表格。在经过身份验证的用户范围内,我希望能够拒绝访问,而不仅仅是单个操作或字段,而是整个管理模块。
generator.yml
似乎没有全局凭据参数,并且在模块级别将内容放入security.yml
似乎没有任何效果。
我浏览了生成的代码并查看了cache/front/dev/modules/autoFoo/actions/actions.class.php
,特别是preExecute(),但我不知道该怎么做。
我想我必须在我自己的actions.class.php文件中覆盖preExecute(),但是我有点不确定需要什么,例如,何时调用parent :: preExecute()(如果在事我需要与否。)
答案 0 :(得分:2)
我相信您可以通过设置“all”值来设置模块级security.yml内的凭据。也就是说,在< module> /config/security.yml中,放置:
all:
credentials: ModuleAccess
答案 1 :(得分:1)
回答我自己的问题,根据一些初步调查的结果,它似乎是:
class fooActions extends autoFooActions
{
public function preExecute() {
if (!sfContext::getInstance()->getUser()->hasCredential('can_do_foo')) {
$this->redirect('@homepage');
}
parent::preExecute();
}
}
...至少会阻止人们通过黑客攻击URL获取管理功能。但我被引导相信sfContext::getInstance()
is evil。因此,我仍然在寻找正确的方法。
答案 2 :(得分:1)
你的model / config文件夹中的security.yml文件应如下所示:
default:
is_secure: on
credentials: [ moduel_access ]