我的登录功能与PHP会话完美配合。我尝试切换到DbSession引擎但登录将不再起作用,因为页面重定向后会话为空。
这是工作流程:
会话现在只包含
[__ flash] =>排列 ( )
响应Cookie" sess" = 请求Cookie" sess" = id { {3}},所以相同的密钥无处不在,但密码页上的会话仍然是空的,90%的时间(因为在一些随机的情况下,会话仍在那里,但我无法重现它按需)
我已经检查了这些问题,而不是同一个问题:
session table
PHP session lost after redirect
有没有人见过类似的东西?我无法弄清楚造成这种情况的原因。
Addendas:
会话配置
'session' => [
'class' => 'yii\web\DbSession',
'name' => 'sess',
'timeout' => 3600,
'db' => 'session_db',
'sessionTable' => 'session',
],
会话数据库配置
$config['components']['session_db'] = [
'class' => 'yii\db\Connection',
...
],
登录操作
// authenticate() Just checks if the user is valid, etc
Yii::$app->user->authenticate();
// login() just calls parent::login(), sets some session values then returns !$this->getIsGuest()
Yii::$app->user->login(Yii::$app->user);
更新!! 我刚刚注意到,如果我使用相同的数据库而不是" db" (我的主要数据库)而不是" session_db",它完美地工作,即使两个表在2个数据库中具有完全相同的模式。