我正在尝试实现DbSession,正如here所述,我已经实现了两个自定义字段,如下所示:
'session' => [
'class' => 'yii\web\DbSession',
'writeCallback' => function ($session) {
return [
'user_id' => Yii::$app->user->id,
'last_write' => time(),
];
},
],
我面临的问题很简单,但是我似乎只找到丑陋的解决方案,因为每次尝试注销或登录(登录前我都会用ajax调用检查内容)时,每次操作中的会话都会更新由于用户是访客而崩溃,仍然没有user->id
。
我可以做难看的解决方案,但是我更了解它的工作原理,或者如何以仅在用户仍然登录后才触发的方式实现。
谢谢!
答案 0 :(得分:0)
第Yii::$app->user->id,
行尝试加载用户identity,如果用户未登录,该加载总是失败。只需检查用户是否为访客:
'session' => [
'class' => 'yii\web\DbSession',
'writeCallback' => function ($session) {
return [
'user_id' => Yii::$app->user->isGuest ? null : Yii::$app->user->id,
'last_write' => time(),
];
},
],