0
コントローラでbeforeAction()
とbehaviors()
の両方のメソッドを使用します。コントローラでYii2のbeforeAction()メソッドとbehaviors()メソッドの両方を使用します
beforeAction()
メソッドを私のコードに追加すると、behaviors()
メソッドが機能しません。
beforeAction()
メソッドを削除すると、behaviors()
メソッドが動作しています。
beforeAction()
を削除する必要はありません。なぜなら、ajax呼び出しのcsrfトークンを無効にするためです。
public function beforeAction($action)
{
if($action->id =='ignore' || $action->id =='accept')
{
$this->enableCsrfValidation = false;
}
return true;
}
そして、認証のためにbehaviors()
メソッドを使用します。
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['create','index','update','change','view','page','active','list'],
'rules' => [
[
'actions' => ['create','index','update','change','view','page','active','list'],
'allow' => true,
'roles' => ['@'],
'matchCallback' => function ($rule, $action)
{
echo "string";
die;
},
],
],
'denyCallback' => function ($rule, $action) {
return $this->redirect(Yii::$app->request->baseUrl);
}
],
];
}
同じコントローラで両方の方法を使用する方法はありますか?