简体   繁体   English

将 Yii1 CSRF Token 用于 Yii2

[英]Use Yii1 CSRF Token into Yii2

I am trying to migrate Yii1 application into Yii2 gradually.我正在尝试将 Yii1 应用程序逐渐迁移到 Yii2。 Until the whole project migrates Yii1 & Yii2 should work together.直到整个项目迁移 Yii1 & Yii2 应该一起工作。 To do that what i have done is downloaded the Yii Basic and places it on root directory.为此,我所做的是下载 Yii Basic 并将其放在根目录中。 Then made changes in Yii1/protected/config/main.php to share session between Yii1 & Yii2.然后在 Yii1/protected/config/main.php 中进行更改以在 Yii1 和 Yii2 之间共享会话。

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

After above change Yii1 & Yii2 shares the same session.在上述更改后,Yii1 和 Yii2 共享同一个会话。

As of now user login through Yii1.截至目前,用户通过 Yii1 登录。 So how can i pass the Yii1's CSRF into Yii2?那么如何将 Yii1 的 CSRF 传递到 Yii2 中呢? So both application works with the same CSRF token.所以这两个应用程序都使用相同的 CSRF 令牌。 As of When ever yii2 generates the CSRF, yii1's CSRF got invalid截至 yii2 生成 CSRF 时,yii1 的 CSRF 无效

What i am thing is set Yii1's CSRF into Session and then in Yii2 generates the CSRF using the value from session.我的事情是将 Yii1 的 CSRF 设置为会话,然后在 Yii2 中使用会话中的值生成 CSRF。 But not sure how to achieve that in Yii2?但不确定如何在 Yii2 中实现?

I have tried below in my global controller in Yii 2.我在 Yii 2 的全局控制器中尝试了以下方法。

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

So i will have Yii 1's CSRF into Yii2 But not sure how to use that in Yii 2.所以我会将 Yii 1 的 CSRF 放入 Yii2 但不确定如何在 Yii 2 中使用它。

i have resolved it by changing the CSRF Param name for Yii2 application and it resolved the issue.我已经通过更改 Yii2 应用程序的 CSRF 参数名称解​​决了这个问题,它解决了这个问题。

ie IE

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM