1

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

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

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

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

4

3 回答 3

2

我相信您可以通过设置“all”值在模块级别 security.yml 中设置凭据。也就是说,在 <module>/config/security.yml 中,输入:

all:
  credentials: ModuleAccess
于 2009-11-03T00:25:53.330 回答
1

您的模型/配置文件夹中的 security.yml 文件应如下所示:

default:
  is_secure: on
  credentials: [ moduel_access ]
于 2009-11-19T00:13:41.143 回答
1

根据一些初步调查的结果,回答我自己的问题,看来:

class fooActions extends autoFooActions
{
  public function preExecute() {
    if (!sfContext::getInstance()->getUser()->hasCredential('can_do_foo')) {
        $this->redirect('@homepage');
    }
    parent::preExecute();
  }
}

...至少可以防止人们破解 URL 以获取管理功能。但我被引导相信那sfContext::getInstance()是邪恶的。因此,我仍在寻找正确的方法。

于 2009-11-02T16:03:28.677 回答