• 技术文章 >php框架 >ThinkPHP

    thinkphp5怎么增加允许指定ip访问模块配置

    藏色散人藏色散人2021-03-22 08:58:17转载667
    下面由thinkphp教程栏目给大家介绍thinkphp5增加允许指定ip访问模块配置方法,希望对需要的朋友有所帮助!

    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);
            }
            
            // ......
    }

    相关推荐:最新的10个thinkphp视频教程

    以上就是thinkphp5怎么增加允许指定ip访问模块配置的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    专题推荐:php
    上一篇:详解Thinkphp中重定向redirect和跳转success、error的区别 下一篇:详解thinkPHP利用ajax异步上传图片并显示、删除
    大前端线上培训班

    相关文章推荐

    • 详解Thinkphp5整合grid++报表• ThinkPHP5如何使用QueryList4• 图文详解thinkphp5+barcode生成条形码• 简单实现thinkphp5 instance!• 解析ThinkPHP5之 _initialize() 初始化方法

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网