用于登录和注销的模型回调

时间:2013-09-18 13:50:18

标签: php cakephp login model callback

基本上,这归结为可以在CakePHP中使用Model Callback在您登录和注销时挂钩。

我想要做的目标是每次用户登录或退出应用程序时都会记录。

我设置了一个自定义日志流,以便为数据库保存适当的值。

在我的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." );

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

1 个答案:

答案 0 :(得分: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);
}

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

不需要让它变得更难。