0

我有一个非常奇怪的问题。我在 Yii 中有一个登录表单,效果很好。将网站移动到另一台服务器后,我得到

错误 400 无法验证 CSRF 令牌

我不明白为什么它可以在开发服务器上运行,但不能在新服务器上运行。这是我的代码:

<div class="form">

<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'login-form',
    'enableClientValidation'=>true,
    'clientOptions'=>array(
       'validateOnSubmit'=>true,
    ),
)); ?>


<div class="row">
    <?php echo $form->labelEx($model,'username'); ?>
    <?php echo $form->textField($model,'username'); ?>
    <?php echo $form->error($model,'username'); ?>
</div>

<div class="row">
    <?php echo $form->labelEx($model,'password'); ?>
    <?php echo $form->passwordField($model,'password'); ?>
    <?php echo $form->error($model,'password'); ?>
</div>

<div class="row buttons">
    <?php echo CHtml::submitButton('Submit'); ?>
</div>

<?php $this->endWidget(); ?>

这是我的配置文件中的 csrf 配置:

'enableCsrfValidation' => !isset($_POST['dontvalidate']) ? true : false,

如果您需要查看示例。是一个正在工作的,是一个有问题的

4

1 回答 1

1

我打开第一个示例,在源代码中找到了这个 html,这是正确的。

<input type="hidden" value="df5a0fc9ab86f85cdcdabe6b2ee62e85d3ac0323" 
      name="YII_CSRF_TOKEN" />

在第二个示例页面上,我没有找到上述任何 html 代码。这意味着enableCsrfValidation在第二个示例 中设置为false

尝试在此页面(或 config/main.php )中调试 $_POST['dontvalidate'] 。

于 2012-09-26T05:44:22.083 回答