0


0

1つのログインアクションに送信する複数のログインフォーム

(ケーキ)アプリケーションに2つのログインフォームがあります。 ホームページに1つ(Pages Controllerによって提供される)とユーザーコントローラーに1つ。 私のユーザーコントローラーからのものは正常に動作しています。 しかし、ホームページからログインしようとすると、空白のページが表示され、firebugで404が表示されます。 奇妙なことは、セッションが正常にセットアップされていることです。

$ this→ Auth→ autoRedirect = false(ユーザーコントローラーbeforeFilter()で設定)と関係があるようです。 問題は何でしょうか。

ログインアクションは次のようになります。

  function login()
  {
    /* Werkt nog niet vanuit `home login` */
    if ($this->Auth->user())
    {
      if(!empty($this->data))
      {
        /* Update last login */
        $this->User->id = $this->Auth->user('id');
        $this->User->saveField('last_login', date('Y-m-d H:i:s'));
      }
      $this->redirect($this->Auth->redirect());
    }
  }

2 回答


0


$ this→ Auth→ autoRedirect = false`を設定する場合、ログイン試行後、login()メソッドで手動でリダイレクトする必要があります。 `$ this→ redirect($ this→ referer());。 リダイレクトがないか間違ったリダイレクトのために、その空白のページを持っていると思います。 その空白ページのURLは何ですか?


0


考えうるすべてを試した後、私の最後の希望は(デフォルトの)ページコントローラーを使用しないことでした。 だから私がやったのは、それを私のアプリ/コントローラーにコピーして、次のように見せることでした:

Auth->allow($this->__allowUnAuthorized);
  }

  function display()
  {
    // Same as default
  }
}

また、user_controllerからapp_controllerにいくつかのものを移動しました。

Auth->autoRedirect = false;

    $this->Auth->loginAction = array(
      'controller' => 'users',
      'action' => 'login'
    );
    $this->Auth->loginRedirect = array(
      'controller' => 'users',
      'action' => 'index'
    );
    $this->Auth->loginError = __(
      'Ongeldige conbinatie van gebruikersnaam en wachtwoord', true
    );
    $this->Auth->authError =  __(
      'U bent niet bevoegd om deze pagina te bekijken' ,true
    );

    $this->Session->delete('Auth.redirect');
  }
}
?>

そして今、すべてがうまく動作します! 多分、$ this→ Sessionまたは$ this→ Authにアクセスできないページコントローラーに何かあったのでしょうか?