资讯专栏INFORMATION COLUMN

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

ISherry / 1256人阅读

摘要:在中添加设置某些可以访问指定模块所有都可以访问模块,仅这两个可以访问模块最好加在这个位置禁止访问模块设置某些可以访问指定模块默认控制器名需要修改框架代码代码位置如下多模块部署绑定模块设置了限制访问模块如模块初始化初始化模块模块请求缓存检查

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/28772.html

相关文章

  • wamp非集成安装

    摘要:新到公司首先就是自己搭建开发环境,原来一直用,被它的默认配置坑了的字符集要改为,所以自己做自己的配置非集成环境,下面安装路径可以进行参考一创建目录目录下再创建三个目录二安装我没写的代表默认,直接下一步就可以根目录配置默认根目录是在,现在改为 新到公司首先就是自己搭建开发环境,原来一直用phpstudy,被它的默认配置坑了【mysql的my.ini字符集要改为utf8】,所以自己做自己的...

    xiaoqibTn 评论0 收藏0
  • 基于ThinkPHP5拿来即用高性能后台管理系统

    摘要:数据库文件已经上传,安装配置就可以使用简称即基于的后台管理系统官方文档地址在线体验地址账户密码线上仓库在线地址源代码下载克隆直接下载本地部署运行环境要求建议配置虚拟域名若不清楚,请自行解决之,方便接下来开展你的开发工作。 喜欢就Star,不只是Fork; 想要分享的动机才是驱动力,而技术仅仅是一种方法。 数据库文件已经上传,安装配置就可以使用 showImg(https://seg...

    894974231 评论0 收藏0
  • 基于ThinkPHP5拿来即用高性能后台管理系统

    摘要:数据库文件已经上传,安装配置就可以使用简称即基于的后台管理系统官方文档地址在线体验地址账户密码线上仓库在线地址源代码下载克隆直接下载本地部署运行环境要求建议配置虚拟域名若不清楚,请自行解决之,方便接下来开展你的开发工作。 喜欢就Star,不只是Fork; 想要分享的动机才是驱动力,而技术仅仅是一种方法。 数据库文件已经上传,安装配置就可以使用 showImg(https://seg...

    SHERlocked93 评论0 收藏0
  • 基于ThinkPHP5拿来即用高性能后台管理系统

    摘要:数据库文件已经上传,安装配置就可以使用简称即基于的后台管理系统官方文档地址在线体验地址账户密码线上仓库在线地址源代码下载克隆直接下载本地部署运行环境要求建议配置虚拟域名若不清楚,请自行解决之,方便接下来开展你的开发工作。 喜欢就Star,不只是Fork; 想要分享的动机才是驱动力,而技术仅仅是一种方法。 数据库文件已经上传,安装配置就可以使用 showImg(https://seg...

    LiuRhoRamen 评论0 收藏0
  • 解读 thinkphp5 源码(二):异常处理和请求生命周期

    摘要:异常处理上节解读源码一自动加载看完了自动加载部分,根据代码执行顺序,的行注册错误和异常处理机制加载惯例配置文件下面的加载配置文件不用说,现在重点看一下异常处理。博客链接解读源码二异常处理和请求生命周期 异常处理 上节解读 thinkphp5 源码(一):自动加载看完了自动加载部分,根据代码执行顺序,base.php的59-64行 // 注册错误和异常处理机制 hinkError::r...

    yuanzhanghu 评论0 收藏0

发表评论

0条评论

ISherry

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<