0

Cakephp2.0にはdomain.comがありますが、ログアウトすると(urlはdomain.com/logout)、domain.com / app/loginにリダイレクトされますdomain.com/app/loginにリダイレクトしたくないのですが、代わりにdomain.com/logoutにリダイレクトします。これらは、UsersControllerとAppControllerにあるコードです。

class AppController extends Controller {
public $helpers = array ('Html', 'Form', 'Js' => array('Jquery'), 'Session');

public $components = array(
    'Session',
    'Auth' => array(
        'loginRedirect' => array('controller' => 'posts', 'action' => 'index'),
        'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
         'authorize' => array('Controller') // Added this line
    )
);
}

ユーザーコントローラー

class UsersController extends AppController {
public $components = array(

    'Auth' => array(
        'loginRedirect' => array('controller' => 'posts', 'action' => 'index'),
        'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
         'authorize' => array('Controller') // Added this line
    )
);

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

public function login() {
    if ($this->request->is('post')) {
        if ($this->Auth->login()) {

            $this->redirect('http://domain.com/thankyou');
        } else {
            $this->Session->setFlash(__('Invalid username or password, try again'));
        }
    }
}

public function logout() {
    $this->redirect($this->Auth->logout());
}
}

どんな助けでも素晴らしいでしょう。ありがとう。

4

3 に答える 3

7

logout()関数でこれを使用することになりました

$this->Auth->logout();
$this->redirect(some url);
于 2012-09-19T19:11:09.667 に答える
2

ログアウトページのビューはありますか?ログアウト後に表示しようとしているものはありますか?ユーザーがログアウトしている可能性がありますが、Cakeは安全であるためログアウトページを表示できないため、Cakeはログインページにリダイレクトします。

セキュリティを有効にしていて、ログインしていないユーザーに表示したいページがある場合は、コントローラーに次のようなものを含める必要があります。

public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow('login','logout');
}
于 2012-09-17T21:18:21.463 に答える
1

確認しましたか?

'Auth' => array(
    'loginRedirect' => array('controller' => 'posts', 'action' => 'index'),
    'logoutRedirect' => array('controller' => 'users', 'action' => 'login'),
)

public function logout() {
    //$this->redirect($this->Auth->logout());
    //Change for :
    //I suppose that you have a logout.ctp view in your View/Pages
    $this->redirect(array('controller' => 'pages', 'action' => 'display', 'logout')
}

その後、あなたのルーツで

Router::connect('/logout', array('controller' => 'pages', 'action' => 'display', 'logout'));

もちろん忘れないでください

$this->Auth->allow('display'
于 2012-09-18T23:48:51.190 に答える