Heim > PHP-Framework > Denken Sie an PHP > 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

藏色散人
Freigeben: 2021-03-22 08:58:17
nach vorne
2504 Leute haben es durchsucht

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',
Nach dem Login kopieren
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);
        }
        
        // ......
}
Nach dem Login kopieren


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!

Verwandte Etiketten:
php
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage