在 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'
],
我正在尝试逐步将 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'
],