在 Yii2 中记录会话销毁

Logging session destroy in Yii2

我正在解决 Yii2 中用户 spontaneously/randomly 注销并返回登录视图的问题。我想在代码中插入一些临时的 Yii::info 登录,其中会话因用户正常注销以外的任何原因终止。例如,如果设置了用户的会话 cookie,但它在会话 => savePath 目录中的相应文件丢失,会话将终止,我想记录这发生了。

起初,我尝试在调用 denyCallback 之前将其记录在 yii\filters\AccessControl::beforeAction 方法中,但每次来宾用户点击登录页面(登录前)时都会记录。我正在寻找一个更合适的地方来放置此日志记录行为。

通过将以下内容添加到我的 web.php 配置中,我得到了我想要的日志记录行为。

$config = [
    //...
    'as beforeRequest' => [
        //...
        'denyCallback' => function () {
            if (Yii::$app->request->isAjax === false)
            {
                // If the user gets punted back to the login screen, log this event
                Yii::info('User redirected to login', __METHOD__);
            }
            return Yii::$app->response->redirect(['site/login']);
        },
    ],
    //...
];