В Yii2 встроен удобный фильтр ограничения доступа к экшену по типам запросов к нему, компонент называется VerbFilter, а используется он как ключ verbs в поведении (behaviors) контроллера. Под катом подробнее.
Для использования данного фильтра добавляем в секцию use следующее содержимое:
use yii\filters\VerbFilter;
Далее в поведение добавляем секцию verbs, вместе с поведением это выглядит так:
public function behaviors() { return [ 'verbs' => [ 'class' => \yii\filters\VerbFilter::className(), 'actions' => [ 'index' => [''], 'view' => ['get'], 'create' => ['get', 'post'], 'update' => ['get', 'put', 'post'], 'delete' => ['post', 'delete'], ], ]; }
В нашем случае к экшену index запрещены любые запросы и при попытке зайти на эту страницу будет отдана 405 ошибка — метод не поддерживается (Method Not Allowed), точно такая же ошибка будет выдана при попытке послать get запрос к экшену delete или post к view. Таким образом данный фильтр работает по принципу белых списков, то есть все что не разрешено, то запрещено. Но для того чтобы фильтр начал работать нужно название action добавить в секцию actions поведения фильтра verbs.
comments powered by HyperComments