Maison > cadre php > PensezPHP > 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

藏色散人
Libérer: 2021-03-22 08:58:17
avant
2497 Les gens l'ont consulté

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',
Copier après la connexion

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);
        }
        
        // ......
}
Copier après la connexion

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!

Étiquettes associées:
php
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal