Heim  >  Artikel  >  PHP-Framework  >  So fügen Sie die Berechtigung zum Festlegen der IP-Zugriffsmodulkonfiguration in thinkphp5 hinzu

So fügen Sie die Berechtigung zum Festlegen der IP-Zugriffsmodulkonfiguration in thinkphp5 hinzu

藏色散人
藏色散人nach vorne
2021-03-19 17:27:452449Durchsuche

In der folgenden Tutorial-Kolumne von thinkphp erfahren Sie, wie Sie thinkphp5 so konfigurieren, dass ein Modul hinzugefügt wird, das den Zugriff auf bestimmte IPs ermöglicht. Ich hoffe, dass es für Freunde in Not hilfreich ist!

So fügen Sie die Berechtigung zum Festlegen der IP-Zugriffsmodulkonfiguration in thinkphp5 hinzu

thinkphp5 fügt die Möglichkeit hinzu, bestimmten IP-Adressen den Zugriff auf die Modulkonfiguration zu ermöglichen. php Kann auf das angegebene Modul zugreifen

['admin' => '*'] Alle IPs können auf das Admin-Modul zugreifen,
['admin' => ['127.0.0.1','192.168.1.100']] Nur diese beiden Eine IP kann auf das Admin-Modul zugreifen

Es ist am besten, es an diesem Ort hinzuzufügen

// 禁止访问模块
'deny_module_list'       => ['common'],
// 设置某些ip可以访问指定模块
'allow_module_ip'        => ['admin' => '*'],
// 默认控制器名
'default_controller'     => 'Index',
Der Framework-Code muss geändert werden

thinkphp/library/think/App.php

Der Code-Speicherort ist wie folgt

public static function module($result, $config, $convert = null) {
        if (is_string($result)) {
            $result = explode('/', $result);
        }
        $request = Request::instance();
        if ($config['app_multi_module']) {
            // 多模块部署
            $module    = strip_tags(strtolower($result[0] ?: $config['default_module']));
            $bind      = Route::getBind('module');
            $available = false;
            if ($bind) {
                // 绑定模块
                list($bindModule) = explode('/', $bind);
                if (empty($result[0])) {
                    $module    = $bindModule;
                    $available = true;
                } elseif ($module == $bindModule) {
                    $available = true;
                }
            } elseif (!in_array($module, $config['deny_module_list']) && is_dir(APP_PATH . $module)) {
                $available = true;
            }
            
            //region 设置了限制ip访问模块, 如:'allow_module_ip' => ['admin'=>['127.0.0.1']]
            if (isset($config['allow_module_ip']) && isset($config['allow_module_ip'][$module])) {
                $allowIps = $config['allow_module_ip'][$module];
                if (!in_array($_SERVER['REMOTE_ADDR'], $allowIps) && $allowIps != '*') {
                    $available = false;
                }

            }
            //end region

            // 模块初始化
            if ($module && $available) {
                // 初始化模块
                $request->module($module);
                $config = self::init($module);
                // 模块请求缓存检查
                $request->cache($config['request_cache'], $config['request_cache_expire'], $config['request_cache_except']);
            } else {
                throw new HttpException(404, 'module not exists:' . $module);
            }
        } else {
            // 单一模块部署
            $module = '';
            $request->module($module);
        }
        
        // ......
}


Verwandte Empfehlungen:

Das neueste 10 thinkphp Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo fügen Sie die Berechtigung zum Festlegen der IP-Zugriffsmodulkonfiguration in thinkphp5 hinzu. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen