0

ログ ファイルにこれらの一連のエラーが表示されており、所有しているリソースに対応するものがないため、これは少し奇妙です。実際、エラーファイルに表示されるこれらのリソースのいずれも認識していません

2010-12-26T12:19:46+00:00 ERR (3): エラー メッセージ リソース 'res' が見つかりません
2010-12-26T12:19:46+00:00 ERR (3): スタック トレース #0 /var/www/application/library/Zend/Acl.php(691): Zend_Acl->get('res')
#1 /var/www/application/library/My/Controller/Plugin/Acl.php(29): Zend_Acl->isAllowed('guest', 'res', '2127250264.html')

2010-12-26T12:50:21+00:00 ERR (3): エラー メッセージ リソース 'fcs' が見つかりません
2010-12-26T12:50:21+00:00 ERR (3): スタック トレース #0 /var/www/application/library/Zend/Acl.php(691): Zend_Acl->get('fcs')
#1 /var/www/application/library/My/Controller/Plugin/Acl.php(29): Zend_Acl->isAllowed('guest', 'fcs', 'ident2')


2010-12-26T12:50:22+00:00 ERR (3): エラー メッセージ リソース 'open' が見つかりません
2010-12-26T12:50:22+00:00 ERR (3): スタック トレース #0 /var/www/application/library/Zend/Acl.php(691): Zend_Acl->get('open')
#1 /var/www/application/library/My/Controller/Plugin/Acl.php(29): Zend_Acl->isAllowed('guest', 'open', '1')

リソース res、fcs、open または 2127250264.html - これらは私のアプリケーションのリソースではないため、これらのエラーが何を意味するのかわかりません。

これをデバッグする方法について、誰でも光を当てることができますか。


編集

class My_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract {
  プライベート $_acl = null;

  public function __construct(Zend_Acl $acl) {
    $this->_acl = $acl;
  }

  public function preDispatch(Zend_Controller_Request_Abstract $request) {  

    //前の例のように、認証されたユーザーにはロール user が割り当てられます
    $role = (Zend_Auth::getInstance()->hasIdentity())
          ? 'ユーザー'
          : 'ゲスト';

    $controller = $request->getControllerName();
    $action = $request->getActionName();

    $requestUri = Zend_Controller_Front::getInstance()->getRequest()->getRequestUri();
    $session = new Zend_Session_Namespace('lastRequest');       
    // view-image を最後に要求された URL として保存しない一時的な修正
    if(strpos($requestUri, 'snapshot')==false && $controller != '登録' && $controller != 'ログイン' && $action != 'view-image' && $action != 'play-video' && $action != 'config') {
        //ログインでない場合にのみ、要求されたアクションを保存します
        $session->lastRequestUri = $requestUri;
    }


    if(!$this->_acl->isAllowed($role, $controller, $action)) {    
      //ユーザーがアクセス権を持っていない場合は、リクエストを変更して別の場所に送信します
      $request->setModuleName('default')
              ->setControllerName('ログイン')
              ->setActionName('log');
    }
  }
}

そして、これは私がリソースを定義したクラスです

class My_Acl extends Zend_Acl {
  public function __construct() {
    //「ゲスト」という新しいロールを追加
    $this->addRole(new Zend_Acl_Role('guest'));

    //guest から継承する user というロールを追加します
    $this->addRole(new Zend_Acl_Role('user'), 'guest');

    //ページというリソースを追加
    $this->add(new Zend_Acl_Resource('video'));
    $this->add(new Zend_Acl_Resource('error'));
    $this->add(new Zend_Acl_Resource('index'));
    $this->add(new Zend_Acl_Resource('login'));
    $this->add(new Zend_Acl_Resource('register'));
    $this->add(new Zend_Acl_Resource('profile'));
    $this->add(new Zend_Acl_Resource('edit-profile'));
    $this->add(new Zend_Acl_Resource('css'));
    $this->add(new Zend_Acl_Resource('js'));
    $this->add(new Zend_Acl_Resource('images'));
    $this->add(new Zend_Acl_Resource('snapshots'));



    //最後に、ゲストがページを閲覧できるようにします
    $this->allow('ゲスト', 'css');
    $this->allow('guest', 'js');
    $this->allow('ゲスト', 'スナップショット');
    $this->allow('ゲスト', '画像');
    $this->allow('ゲスト', 'エラー');
    $this->allow('ゲスト', 'ログイン');
    $this->allow('ゲスト', 'インデックス');
    $this->allow('ゲスト', '登録');
    $this->allow('guest', 'profile','view-profile');
    $this->allow('guest', 'profile','view-image');
    $this->allow('guest', 'profile','all-videos');
    $this->allow('guest', 'profile','all-fans');
    $this->allow('guest', 'profile','favorite-artists');
    $this->allow('guest', 'profile','favorite-videos');
    $this->allow('guest', 'video','display-thumb');

    $this->allow('guest', 'video', 'config');
    $this->allow('guest', 'video', 'play');
    $this->allow('guest', 'video', 'play-video');
    $this->allow('guest', 'video', 'new-videos');
    $this->allow('ゲスト', 'ビデオ', 'カテゴリ');
    $this->allow('ゲスト', 'ビデオ', 'インデックス');
    $this->allow('ゲスト', 'ビデオ', '検索');
    $this->allow('user', 'video');
    $this->allow('user', 'profile');
  }
}

4

2 に答える 2

0

私は(My / Controller / Plugin / Acl.phpを見ずに)あなたがコントローラー/モジュール/アクション名からリソースを引き出していると推測します。そして、誰かがあなたがアクセスすることを期待していないURLにアクセスしました(おそらく、以前は異なるURLを持っていた古いバージョンのアプリケーションから)。

于 2010-12-26T14:18:19.953 に答える