为什么yii2想要通过post方法注销

时间:2017-09-19 17:15:18

标签: php yii

我是yii的新手,我试图使用站点控制器中的默认行为功能创建一个简单的身份验证。

完成后,我可以登录但无法注销并显示错误:

Method Not Allowed. This url can only handle the following request methods: POST. 

然后我检查了控制器并注意到:

public function behaviors()
{
    return [
        'access' => [
            'class' => AccessControl::className(),
            'rules' => [
                [
                    'actions' => ['login', 'error'],
                    'allow' => true,
                ],
                [
                    'actions' => ['logout', 'index'],
                    'allow' => true,
                    'roles' => ['@'],
                ],
            ],
        ],
        'verbs' => [
            'class' => VerbFilter::className(),
            'actions' => [
                'logout' => ['post'],
            ],
        ],
    ];
}

我改变了

'actions' => [
     'logout' => ['post'],
],

'actions' => [
     'logout' => ['get'],
],

它工作正常。

我想知道这背后的概念是什么以及为什么yii想要使用post方法进行注销。

1 个答案:

答案 0 :(得分:0)

注销必须是POST以防止Cross-site request forgery。请求应包含CSRF令牌。它可以通过以下方式获得:

Yii::$app->request->csrfParam