1

私がしたこと

クックブックのこの部分を使用して認証を作成しました: リンク

public function beforeFilter() {
    $this->Auth->allow('index');
    $this->Auth->fields = array('username' => 'email', 'password' => 'password');
}

どうしたの

ログイン フォームに、パスワードとメールの組み合わせが正しくないと常に表示されていました。しばらく検索して試した後、UsersController の login() 関数の Auth->login() パラメータに「$this->request->data」を追加しました。

public function login(){
    $this->layout = 'login';
    if ($this->request->is('post')){
        if ($this->Auth->login($this->request->data)){
            $this->redirect($this->Auth->redirect());
        } else {
            $this->Session->setFlash(__('Ongeldig email adres of wachtwoord. Probeer het AUB opnieuw'));
        }
    }
}

これは機能しましたが、「$user['id']」を使用してログイン ユーザー ID を取得できません。$user 変数がわからないということです。

私が期待したこと

そもそも、パラメーターを追加せずにユーザーをログインさせる必要がありました。次に、ログインしているユーザーの ID を出力する必要があります。

誰かが問題を解決してくれることを願っています。前もって感謝します!

4

1 に答える 1

0

fields は今、認証配列にあります:

   'authenticate' => array(
        'Form' => array(
            'fields' => array('username' => 'email', ...)
        )
    )

http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#configuring-authentication-handlersを参照してください

どちらか

$this->Auth->authenticate = ...

また

public $components = array(
    'Auth' => array(
        'authenticate' => ...
    )
);

しかし、PHP フリーランサーが述べたように、これは十分に文書化されています。

どのクックブックのバージョンを使用しましたか? 2.xのもの?

于 2012-12-12T14:56:59.397 に答える