0

私がログインするとき:

$this->Auth->login($this->request->data)

そして今、私が言うとき:

$this->set('current_user', $this->Auth->user());

私の $current_user には、ユーザー名とパスワードのみがあります。私のデータベースのようにID、first_name、last_nameなどはありません。なんで?そのデータが必要です!

$this->Auth->login() を試しました - $this->request->data なしで試しましたが、うまくいきませんでした。

4

2 に答える 2

1

ログイン関数にリクエストデータを送信する必要はありません。一致する場合は、現在の投稿データに基づいてユーザーを返します。

これが私のUserController.phpからのログイン関数です

public function login() {
    if($this->Auth->user()) {
        $this->redirect('/');
    }

    if ($this->request->is('post')) {
        if ($this->Auth->login()) {
            $this->redirect($this->Auth->redirect());
        } else {
            $this->Session->setFlash(__('Invalid username or password.'));
        }
    }
}

ビューでユーザーのフィールドを検索するには、AppController.phpで次のように設定します。

class AppController extends Controller {

    public function beforeFilter() {
        $this->set('user', $this->Auth->user());
    }

}

その後、$userすべてのビューで利用可能になります。

index.ctp

if($user) {
    echo var_dump($user);
}

array
  'id' => string '15' (length=2)
  'created' => string '2012-06-29 21:50:44' (length=19)
  'modified' => string '2012-06-29 21:50:44' (length=19)
  'group_id' => string '1' (length=1)
  'username' => string 'user' (length=4)
  'email' => string 'email@email.com' (length=15)

echo $user['id']; -> 15
echo $user['email']; -> email@email.com
于 2012-07-07T23:30:31.157 に答える
0

Auth::login()2.0 でメソッドの動作方法が変更されました。ログイン メソッドに投稿データを渡す必要がなくなりました。これにより、リクエスト オブジェクトからデータが自動的に取得されます。

詳細については、こちらの赤いボックスを参照してください: http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#identifying-users-and-logging-them-in

于 2012-07-07T22:11:36.887 に答える