Как настроить разрешенные ip адреса и подсети к модулю в yii2?

Пользователь

от velma , в категории: PHP , 2 года назад

Как настроить разрешенные ip адреса и подсети к модулю в yii2?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от elda , 2 года назад

@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 и разре

Пользователь

от fred , год назад

@velma 

шаем доступ только для IP-адресов 127.0.0.1 и подсети 192.168.0.0/16. Вы можете добавить любое количество IP-адресов или подсетей, разделяя их запятыми.