Yii2错误请求(#400)



在我的系统中添加了这段代码后,我正试图登录到我的系统,这给了我错误的请求方法因为我不想禁用CSrf方法这在layouts/main.php 中

<div class="wrap">
<?php
NavBar::begin([
'brandLabel' => Yii::$app->name,
'brandUrl' => Yii::$app->homeUrl,
]);
$menuItems = [
['label' => 'Home', 'url' => ['/site/index']],
];
if (Yii::$app->user->isGuest) {
$menuItems[] = ['label' => 'Login', 'url' => ['/site/login']];
} else {
$menuItems[] = [
'label' => 'logout('.Yii::$app->user->user->identity->username.')',
'url' =>['/site/logout'],
'linkOptions' =>[
'data-method'=> 'post'
]
];
}

然后SiteController.php

public function actionLogin()
{
if (!Yii::$app->user->isGuest) {
return $this->goHome();
}
$this->layout = 'blank';
$model = new LoginForm();
if ($model->load(Yii::$app->request->post()) && $model->login()) {
return $this->goBack();
} else {
$model->password = '';
return $this->render('login', [
'model' => $model,
]);
}
}

确保布局文件中有以下内容:

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

您还需要在表单中输入csrfInput。如果你没有用ActiveForm生成表单,你必须手动添加,例如:

<input type="hidden" name="<?= Yii::$app->request->csrfParam; ?>" value="<?= Yii::$app->request->csrfToken; ?>" />

csrfParam是&quot_csrf";默认情况下,但是这样使用它。以后您可能需要重命名它。

相关内容

最新更新