1

ユーザーの最後のログインを記録したいので、かなり標準的なことをしています。私のUsersControllerで:

if ($this->Auth->login()) {
    $this->User->id = $this->Auth->user('id');
    $this->User->saveField('last_login', date(DATE_ATOM));
    $this->Session->setFlash('Yay!'));
    $this->redirect( $this->Auth->redirectUrl() );
}

また、'autoRedirect' => falseデータを保存するために必要な AppController を設定しました。問題は、ユーザーがログイン ページに移動する前のページに戻らないことです。

ログインページは何らかの理由でリファラーがログインページであると考え、その結果、ユーザーはアプリの「ホームページ」に戻されます。

私は当惑しています。ログイン時に、ユーザーがログイン画面に移動する前に表示されていたページに移動するようにするにはどうすればよい'autoRedirect' => falseですか?

4

1 に答える 1

1

これが最も信頼できるアプローチのようです。

ログインページへのリンク:

echo $this->Html->link('Login', '/login?redirect='.$this->here);

ログインフォーム:

echo $this->Form->input('redirect', array('type' => 'hidden', 'value' => $this->request->query['redirect']));

コントローラのログインアクションで

if (isset($this->request->data['User']['redirect'])) {
    $this->redirect( $this->request->data['User']['redirect'] );
} else {
    $this->redirect( $this->Auth->redirectUrl() );
}
于 2013-02-16T19:32:26.250 に答える