重定向后Yii2 DbSession丢失,90%的时间

时间:2018-05-30 20:57:53

标签: yii yii2

我的登录功能与PHP会话完美配合。我尝试切换到DbSession引擎但登录将不再起作用,因为页面重定向后会话为空。

这是工作流程:

  1. 用户输入其用户ID并点击提交以发布数据
  2. 使用密钥 sess = XXXX(在重定向之前使用日志测试)创建验证工作(我已测试)和新的身份Cookie
  3. $ _SESSION填充了用户数据(在重定向之前使用日志测试)
  4. 该页面使用新的响应Cookie 重定向。
  5. 加载密码页面,请求cookie具有相同的XXXX值(在Chrome开发人员工具中重定向+之后使用日志进行测试)。
  6. 会话现在只包含

    [__ flash] =>排列 ( )

  7. 响应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个数据库中具有完全相同的模式。

0 个答案:

没有答案