2

私は CakePHP を初めて使用し、そのドキュメントを読んで、簡単な認証の例に従っています。私はまた、私の問題に対する答えを広く検索しました (このサイトの回答を含む)。

私は CakePHP 2.0 を使用しており、UsersController のログイン関数は次のようになります。

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

私の AppController は次のようになります。

public $components = array(
                    'Session',
                    'Auth' => array(
                            'loginRedirect' => array('controller' => 'pages', 'action' => 'display'),
                            'logoutRedirect' => array('controller' => 'pages', 'action' => 'display')
                    )
        );

public function beforeFilter() {
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
}

私のユーザーモデル:

class User extends AppModel {

public $name = "User";

}

そしてログインフォーム:

echo $this->Session->flash('auth');
echo $this->Form->create('User', array('action' => 'login'));
echo $this->Form->input('username');
echo $this->Form->input('password');
echo $this->Form->end('Login');

問題は、ユーザーがログインしないことです。パラメータとして $this->request->data なしで $this->Auth->login() が呼び出されると、セッションに何も書き込まれず、ページが更新されるだけです。 $this->request->data を指定すると機能し、資格情報がセッションに書き込まれ、正しくリダイレ​​クトされます。ただし、データベースに存在しない場合でも、 $this->Auth->login($this->request->data) を使用して誰でも「ログイン」できることに気付きました。これに加えて、間違った資格情報を入力しても何も起こらず、フラッシュ メッセージは表示されません。

特別なことをしようとしているわけではありません。必要なのは、ユーザーをログインさせる機能だけです。ユーザー名とパスワードのフィールドを持つ単純なユーザーテーブルがあり、その例に従ってドキュメントを読みましたが、まだ何も試していません働きました。

回答に必要なすべての情報を提供していない場合は、申し訳ありません。どんな助けでも大歓迎です。

4

2 に答える 2

5

私はまったく同じ経験をしました。ある時点で、ユーザー名とパスワードを使用して正常にログインできましたが、ログインしていることを示すコードがビューに表示されていませんでした。その後ログインしたときにも、本当に混乱していました。ランダムなユーザー名とパスワードを使用しても、ログイン通知は成功しました。

ログイン状態の場合は、入力したユーザー名とパスワードに関係なく、何が起こったのかと思います$this->Auth->login()true解決策は、おそらく$this->Auth->logout()プログラムを呼び出すか、Cookieを空にして、プログラムがログインしていることを指定しないようにすることです。その後$this->Auth->login()、再び通常どおりに動作します。

于 2012-08-02T15:00:27.363 に答える
0

使用するエンジンをどこで定義しましたか? ドキュメントで説明されているようにエンジン/アダプタを設定することで解決されたhttp://ask.cakephp.org/questions/view/unable_to_loginとおそらく同じ問題です。

于 2012-04-05T10:16:15.430 に答える