0

CakePHP 2.2 を実行していて、コントローラーを拒否し、他のいくつかのコントローラーを許可するグループがあります。そのグループのユーザーとしてログインし、明示的な権限を持っていないコントローラーにアクセスしようとすると、次のエラーが発生します。

致命的なエラー: 行 672 の /var/www/project/lib/Cake/Network/CakeResponse.php で 134217728 バイトの許容メモリ サイズが使い果たされました (32 バイトを割り当てようとしました)

また:

致命的なエラー: 行 155 の /var/www/project/lib/Cake/Event/CakeEventManager.php で 134217728 バイトの許容メモリ サイズが使い果たされました (80 バイトを割り当てようとしました)

これは、ユーザーがコントローラーにアクセスできない場合にのみ発生します。これが発生する理由はありますか?AppController は次のように構成されます。

public $components = array(
    'Acl',
    'Auth' => array(
        'authorize' => array(
            'Actions' => array('actionPath' => 'controllers'),
        ),
        'Form' => array(
            'userModel' => 'User',
            'fields' => array(
                'username' => 'username',
                'password' => 'password'
            )
        ),
        'loginAction' => array(
            'controller' => 'users',
            'action' => 'login',
        ),
        'loginRedirect' => '/users/dashboard', //'/admin/customers/index',//'/admin/tread_designs', // '/shopfloor/build/app.html',
        'logoutRedirect' => '/users/login', //'/shopfloor/build/app.html'
    )
);

そして beforeFilter:

public function beforeFilter() {
    parent::beforeFilter();

    if($this->RequestHandler->responseType() == 'json'){
        $this->RequestHandler->setContent('json', 'application/json' );
    }

    $this->Auth->ajaxLogin = '/users/session_expired';
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
    $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
}

これについて混乱しており、あなたの助けに感謝します。また、メモリ制限を 1024MB 上げると、代わりにタイムアウトになります。ばかげた何かが起きています。

UPDATE mysqlクエリログをtail -fすると、同じ3つのクエリを何度も試行してこのエラーを生成するリクエストが表示されます。

4

1 に答える 1

0

解決しました。AppController で 'unauthorizedRedirect' => false を設定する必要があります

例:

    public $components = array(
    'Acl',
    'Auth' => array(
        'authorize' => array(
            'Actions' => array('actionPath' => 'controllers'),
        ),
        'Form' => array(
            'userModel' => 'User',
            'fields' => array(
                'username' => 'username',
                'password' => 'password'
            )
        ),
        'loginAction' => array(
            'controller' => 'users',
            'action' => 'login',
        ),
        'loginRedirect' => '/users/dashboard', 
        'logoutRedirect' => '/users/login', 
        'unauthorizedRedirect' => false 
    ));
于 2013-03-20T19:30:11.810 に答える