在 Yii2 中使用 Yii1 CSRF Token

Use Yii1 CSRF Token into Yii2

我正在尝试逐步将 Yii1 应用程序迁移到 Yii2。在整个项目迁移之前,Yii1 和 Yii2 应该一起工作。为此,我所做的是下载 Yii Basic 并将其放在根目录中。然后在 Yii1/protected/config/main.php 中进行更改以在 Yii1 和 Yii2 之间共享会话。

components => array(
    'session' => array(
        'class' => 'CDbHttpSession',
        'sessionTableName' => 'session',
    ),
    'user' => array(
        'allowAutoLogin' => true,
        'authTimeout' => 3600 * 24 * 30,
        'stateKeyPrefix' => ''
    ),
)

经过上述更改后,Yii1 和 Yii2 共享同一会话。

截至目前,用户通过 Yii1 登录。那么如何将 Yii1 的 CSRF 传递给 Yii2?所以这两个应用程序都使用相同的 CSRF 令牌。当 yii2 生成 CSRF 时,yii1 的 CSRF 无效

我的意思是将 Yii1 的 CSRF 设置到会话中,然后在 Yii2 中使用会话中的值生成 CSRF。但不确定如何在 Yii2 中实现?

我在 Yii 2 的全局控制器中尝试了以下内容。

Yii::$app->getSession()->set(Yii::$app->request->csrfParam,$_SESSION['csrf_token_value']);

所以我会将 Yii 1 的 CSRF 导入 Yii2 但不确定如何在 Yii 2 中使用它。

我已经通过更改 Yii2 应用程序的 CSRF 参数名称解​​决了这个问题,它解决了这个问题。

'request' => [
        'cookieValidationKey' => 'XXXXXXXXXXXXXXXXX',
        'enableCsrfValidation' => true,
        'csrfParam' => 'yii2_csrf'
    ],