Yii2-使用afterLogin和beforLogin自动更新上次登录时间

先明确两点

  • 如果User Model是继承自 ActiveRecord
  • 而afterLogin 和 beforeLogin 是 yii\web\User 的两个事件

那么把 yii\web\User 的两个事件挂载在 User Model 肯定不会触发了。

可以通过配置来解决,配置是支持事件挂载的;
例如:


'components' =>[
    ...
    'user' => [
        'identityClass' => 'common\models\User',
        'enableAutoLogin' => true,
        'on beforeLogin' => function($event) {
            $user = $event->identity; //这里的就是User Model的实例
            $user->last_login_at = time();
            $user->save();
            ...
        },
        'on afterLogin' => function($event) {
            //the same
        }
    ],
    ...
]

你可能感兴趣的:(Yii2-使用afterLogin和beforLogin自动更新上次登录时间)