1

さまざまなテーブルを処理するための多数の管理ジェネレーターを備えた Web サイトがあります。認証済みユーザーの範囲内で、個々のアクションやフィールドだけでなく、管理モジュール全体へのアクセスを拒否できるようにしたいと考えています。

のグローバル資格情報パラメーターはないようで、モジュール レベルで何かを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

model/config フォルダー内の 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 に答える