thinkphp5配置允許指定ip訪問模塊

有時候我們需要指定的IP來訪問,需要設置下面的:

在config.php中添加

// 禁止訪問模塊

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

        }

         

        // ......

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章