发布于 4年前

thinkphp5配置指定ip访问模块

config.php中添加

'allow_module_ip' => ['admin' => '*'], // 设置某些ip可以访问指定模块

['admin' => '*'] 所有ip都可以访问admin模块,
['admin' => ['127.0.0.1','192.168.1.100']] 仅这两个ip可以访问admin模块

最好加在这个位置

// 禁止访问模块

'deny_module_list'       => ['common'],

// 设置某些ip可以访问指定模块

'allow_module_ip'        => ['admin' => '*'],

// 默认控制器名

'default_controller'     => 'Index',

需要修改框架代码 thinkphp/library/think/App.php

代码位置如下

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);

        }

        // ......

}
©2020 edoou.com   京ICP备16001874号-3