2

ここにある ACL チュートリアルを実装しようとしています: http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html

すべての指示に従いましたが、 [my_site]/users/add ERR_TOO_MANY_REDIRECTS エラーに移動しようとするとエラーが発生します。

私はこれをCakephp Webサイトで見つけました:

これは、たとえば、コントローラーのメソッドからデータを受け取る要素があり、このメソッドの実装でログインを実行する必要がある場合に発生し、最終的にブラウザーがリダイレクトを拒否する原因となる無限ループが作成されます。

そして、彼らはこれを修正として提案します:

function  beforeFilter ()  { 
 $ this -> Auth -> allow ( 'CONTROLLER_NAME' ); 
}

うまくいかないようです。

これからAppControllerを変更すると:

public function beforeFilter() {
    $this->Auth->allow('index', 'view', 'login', 'add');
}

に:

public function beforeFilter() {
    $this->Auth->allow('*');
}

エラーは発生しなくなりましたが、 [my_site]/users/loginにリダイレクトされます

ユーザー追加ページを表示できないという私が間違っていることについて何か提案はありますか? ティア!

ユーザーコントローラー:

public function beforeFilter() {
        parent::beforeFilter();
        $this->Auth->allow('add');
    }

ログイン機能 (UsersController):

Public function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            $this->redirect($this->Auth->redirect());
        } else {
            $this->Session->setFlash(__('Invalid username or password, try again'));
        }
    }
}

認証コンポーネントローダー:

public $components = array(
        'Session',
        'RequestHandler',
        'Auth' => array(
            'loginRedirect' => array('controller' => 'projects', 'action' => 'index'),
            'logoutRedirect' => array('controller' => 'pages', 'action' => 'display', 'home')
        )
    );
4

3 に答える 3

2

UsersController取得しているエラーは ACL とは関係ありませんが、ユーザーをリダイレクトしようとしている追加およびログイン機能へのアクセスを認証コンポーネントが拒否しています。次の行を( ではなく)に追加して、addおよびlogin関数が公開されていることを確認します。UsersControllerAppController

public function beforeFilter() {
    $this->Auth->allow(array('add', 'login'));
}

現在発生しているループは、追加機能とログイン機能が公開されていないためです。そのため、ループは次のようになりますadd -> Unauthorized -> login -> Unauthorized -> login。 ... など。

于 2013-01-28T13:23:26.930 に答える
0

beforeFilter()を次のように変更してくださいAuth->allow('_CONTROLLER_NAME'):

public function beforeFilter(){
    $this->Auth->allow();
}

それがうまくいくことを願っています!

于 2013-01-28T14:39:11.020 に答える