1

我想记录用户的最后一次登录,所以我正在做一些相当标准的事情。在我的用户控制器中:

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 回答