Maison  >  Article  >  cadre php  >  Comment ajouter l'autorisation pour spécifier la configuration du module d'accès IP dans thinkphp5

Comment ajouter l'autorisation pour spécifier la configuration du module d'accès IP dans thinkphp5

藏色散人
藏色散人avant
2021-03-19 17:27:452433parcourir

La colonne tutorielle suivante de thinkphp vous présentera comment configurer le module thinkphp5 pour autoriser un accès IP spécifié. J'espère que cela sera utile aux amis qui en ont besoin !

Comment ajouter l'autorisation pour spécifier la configuration du module d'accès IP dans thinkphp5

thinkphp5 ajoute une adresse IP spécifiée pour accéder à la configuration du module

Ajouter

dans config.php 'allow_module_ip' => ['admin' => '*'], // Définir certaines IP pour pouvoir accéder au module spécifié

['admin' => accessible au module admin,
['admin' => ['127.0.0.1','192.168.1.100']] Seules ces deux IP peuvent accéder au module admin

Il est préférable de l'ajouter dans cette position

// 禁止访问模块
'deny_module_list'       => ['common'],
// 设置某些ip可以访问指定模块
'allow_module_ip'        => ['admin' => '*'],
// 默认控制器名
'default_controller'     => 'Index',

Besoin de modifier le code du framework
thinkphp/library/think/App.php

L'emplacement du code est le suivant

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

Recommandations associées : Les 10 derniers didacticiels vidéo thinkphp

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer