ユーザーがログインすると、チェックボックスがオンになっていると、ユーザーの電子メールとパスワードを記憶するためにCookieを書き込むチェックボックスが表示されるように設定しようとしています。ユーザーコントローラーのログイン機能で次のようにします。
public function login() {
if (!empty($this->data)) {
if ($this->Auth->login()) {
$userId = $this->Auth->user('id');
if(!empty($this->data['User']['remember'])) {
$user = $this->User->find('first', array('conditions'=>array('id'=>$userId), 'recursive'=>-1, 'fields'=>array('email', 'password')));
$this->Cookie->write('User', $user['User']);
}
... etc etc ...
Cakephp 1.x ではこれが機能していたので、AppController の beforefilter で単に Cookie を探して、次のようにログインしようとしました。
//try to auto login a users
if($this->Auth->user() == null) {
$user = $this->Cookie->read('User');
if(!empty($user)) {
$this->Auth->login($user);
}
}
しかし、それは今はうまくいかないようです。ログイン関数に何かを渡すと、私が読んだことから、trueが返されると思います。正しくログインするには、その Cookie の内容をログイン機能に POST する必要があります...
そうですか?どこかにフォームを作成し、多くのリダイレクトを介して情報を投稿するよりも簡単な方法はありますか?
また、Cookie 情報を $this->request->data 配列に追加してログインしようとしましたが、どちらも機能しませんでした :(
//try to auto login a users
if($this->Auth->user() == null) {
$user = $this->Cookie->read('User');
if(!empty($user)) {
$this->request->data['User']['email'] = $user['email'];
$this->request->data['User']['password'] = $user['password'];
$this->Auth->login();
}
}
誰でも私を助けることができますか?これを行うには、もっと簡単な方法があるはずです。