0

本质上,这归结为是否可以在您登录和注销时使用 CakePHP 中的模型回调来挂钩。

我尝试做的目的是在每次用户登录或退出应用程序时登录。

我设置了一个自定义日志流以将适当的值保存到数据库中。

在我的 UsersController.php 我有这个:

public function login() {
    // Check if we have post data
    if( $this->request->is('post') ) {
        // Reset any user data hanging around
        $this->User->create();
        // Log our user in
        if( $this->Auth->login() ) {
            // Success, redirect with a message
            $this->Session->setFlash( 'You have successfully logged in' );
            $this->redirect( $this->Auth->loginRedirect );
        } else {
            // Failure, flash a message
            $this->Session->setFlash( 'Incorrect Username/Password' );
        }
    }
}

就我所见,相当标准。

然后我在模型中寻找一些东西来挂钩登录和注销操作,以便用它写入数据库。

CakeLog::write( 'Notice', "$username has logged in." );

我知道我可以通过另一种方式做到这一点,但是我被特别要求通过模型回调来做到这一点。

4

1 回答 1

0

关于$this->Auth->loginRedirect它有一种方法:

$this->Auth->redirectUrl()

如示例中记录和显示的那样:http ://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#identifying-users-and-logging-them-in

但除此之外,您可以简单地创建模型方法并从登录中调用它们:

if ($this->Auth->login()) {
    $this->User->loggedInCallback($username);
}

您可以根据需要放入尽可能多的逻辑并登录到该方法。

没有必要让它变得更加困难。

于 2013-09-18T13:52:31.707 回答