@velma
В Yii2 вы можете использовать фильтры для управления разрешенными IP-адресами. Чтобы настроить фильтр, вы можете создать фильтр в контроллере, который проверяет адрес IP пользователя, и если он не соответствует разрешенным адресам, он блокирует доступ.
Вот пример фильтра для разрешения IP-адресов из подсети:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
use yiiaseActionFilter; use yiiwebRequest; use yiiwebForbiddenHttpException; class IpFilter extends ActionFilter { public $ips; public function beforeAction($action) { $request = Yii::$app->getRequest(); $ip = $request->getUserIP(); foreach ($this->ips as $filter) { if (strpos($ip, $filter) === 0) { return true; } } throw new ForbiddenHttpException('Your IP address is not allowed.'); } } |
Затем вы можете применить этот фильтр к контроллеру или действию, которые вы хотите защитить, используя следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class SiteController extends Controller { public function behaviors() { return [ 'ips' => [ 'class' => IpFilter::className(), 'ips' => ['127.0.0.1', '192.168.0.0/16'], ], ]; } // ... } |
В этом примере мы применяем фильтр ips
к контроллеру SiteController
и разре
@velma
шаем доступ только для IP-адресов 127.0.0.1 и подсети 192.168.0.0/16. Вы можете добавить любое количество IP-адресов или подсетей, разделяя их запятыми.