根据凭据限制整个symfony管理生成器页面

时间:2009-11-02 15:20:29

标签: security symfony1 admin generator credentials

我有一个拥有大量管理生成器的网站,可以处理各种各样的表格。在经过身份验证的用户范围内,我希望能够拒绝访问,而不仅仅是单个操作或字段,而是整个管理模块。

generator.yml似乎没有全局凭据参数,并且在模块级别将内容放入security.yml似乎没有任何效果。

我浏览了生成的代码并查看了cache/front/dev/modules/autoFoo/actions/actions.class.php,特别是preExecute(),但我不知道该怎么做。

我想我必须在我自己的actions.class.php文件中覆盖preExecute(),但是我有点不确定需要什么,例如,何时调用parent :: preExecute()(如果在事我需要与否。)

3 个答案:

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