0

本質的にこれは、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' );
        }
    }
}

私が見る限りかなり標準的です。

次に、Login アクションと Logout アクションにフックして、これを使用してデータベースに書き込むためのモデルを探しています。

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 に答える