5

私は CakePHP を使い始めましたが、Auth コンポーネントの設定に問題があります。ユーザーがログアウトするたびに、ケーキはユーザーをログインにリダイレクトします。 logout() 中にいくつかの Cookie を削除/設定解除しようとしていることがわかります。これは、Wordpress サイトでシングル サインオンを設定しているためで、両方のサイトからユーザーをログアウトさせたいと考えています。

私のAppController:

class AppController extends Controller {    

public $components = array(
    'Session',
    'Cookie',
    'Auth'      => array(
        'loginRedirect'     => array('controller' => 'questions', 'action' => 'index'), 
        'logoutRedirect'    => array('controller' => 'pages', 'action' => 'display', 'home')            
    )
);
public function beforeFilter() {
    $this->Auth->allow('index', 'view', 'login', 'logout', 'display');
}
}

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

class UsersController extends AppController {

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

...

public function login() {
//who cares
}

public function logout() {

    $wp_cookie = grab_wp_cookie(); //this grabs a specific cookie
    $cookie_name = (isset($wp_cookie['name'])) ? $wp_cookie['name'] : NULL;
      //NONE OF THESE WORK...
    $this->Cookie->write($cookie_name, '', false, time()-3600);
    $this->Cookie->delete($cookie_name);
    $this->Cookie->destroy();

    $this->redirect($this->Auth->logout());
}
4

3 に答える 3

1

ログインせずにページにアクセスできないようです。(確認のためだけにログに記録されずにURLにアクセスしてみることができます)

解決策は、このbeforeFilter関数を PagesControllerに追加することです。

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

    $this->Auth->allow();
}
于 2013-04-04T08:50:16.827 に答える
0

PagesController は AppController の beforeFilter を取ります。私ができることはこれです:

/**
 * GET /users/logout
 */
public function logout() {
    $this->Auth->logout();
    $this->redirect(array('controller' => 'pages', 'action' => 'display', 'home'));
}

ログアウトにはビューがないため、ログアウトを許可する必要はありません。アプリ コントローラー beforeFilter は次のようになります。

public function beforeFilter() {
    $this->Auth->allow('index', 'view', 'display');
}
于 2013-08-08T15:44:49.287 に答える