3

現在のページがログアウトしたユーザーに許可されているかどうかを確認する、作成しようとしているログアウト関数があります。そうであれば、私はページにとどまります。そうでなければ、ホームページにリダイレクトします。現在のページが許可されているかどうかを確認する方法を知りたいと思っていました。次のコードで承認されているかどうかを確認できます。

public function logout()
{
    if($this->isAuthorized($this->Auth->user())) {
        $this->Auth->logout();
        $redirect = $this->redirect($this->referer());
    } else {
        $this->Auth->logout();
        $redirect = $this->redirect(['controller' => 'pages', 'action' => 'home']);
    }
    return $redirect;
}

しかし、現在のページが許可されているかどうかを確認できません:

public function logout()
{
    if(in_array($this->request->here, $this->Auth->allow())) {
        $this->Auth->logout();
        $redirect = $this->redirect($this->referer());
    } else {
        $this->Auth->logout();
        $redirect = $this->redirect(['controller' => 'pages', 'action' => 'home']);
    }
    return $redirect;
}
4

2 に答える 2

0

私は答えを見つけましたが、それを行うためのより良い方法があれば、まだ知りたいです. 非表示の入力でアクションをコントローラー メソッドに渡し、allowedPages 配列にあるかどうかを確認します。

public $allowedPages = [];
public function beforeFilter(Event $event)
{
    parent::beforeFilter($event);
    $this->allowedPages = ['checkout', 'charge', 'logout'];
    $this->Auth->allow($this->allowedPages);
}

public function logout()
{
    if(in_array($this->request->data('action'), $this->allowedPages)) {
        $this->Auth->logout();
        $redirect = $this->redirect($this->referer());
    } else {
        $this->Auth->logout();
        $redirect = $this->redirect(['controller' => 'pages', 'action' => 'home']);
    }
    return $redirect;
}
于 2015-10-21T17:16:09.293 に答える