我是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方法进行注销。
答案 0 :(得分:0)
注销必须是POST以防止Cross-site request forgery。请求应包含CSRF令牌。它可以通过以下方式获得:
Yii::$app->request->csrfParam