如何通过代码关闭Drupal flood unblock/control?及移除该模块方法
彻底关闭Drupal的Flood Control(洪水控制)功能的方法
以下是几种彻底禁用登录失败封禁功能的方案,按推荐优先级排序:
1. 修改settings.php配置文件
这是最安全且无需额外模块的方法,通过强制覆盖配置项绕过洪水检查:
在sites/default/settings.php文件末尾添加以下代码:
// 禁用登录失败的IP和用户洪水限制 $config['user.flood']['limit'] = 999999; $config['user.flood']['interval'] = 1; $config['user.flood']['ip_limit'] = 999999; $config['user.flood']['ip_interval'] = 1; $config['user.flood']['user_limit'] = 999999; $config['user.flood']['user_interval'] = 1;
设置极高的阈值和极短的间隔后,系统几乎不会触发任何封禁规则。
2. 自定义模块实现钩子覆盖
通过自定义模块的钩子,精准跳过登录相关的洪水检查,不影响其他功能:
- 创建一个简单的自定义模块(如
custom_flood_disable) - 在模块的
.module文件中添加以下代码:
/** * Implements hook_flood_is_allowed(). */ function custom_flood_disable_flood_is_allowed($name, $threshold, $interval, $identifier) { // 针对登录失败的IP和用户检查直接放行 if (in_array($name, ['user.failed_login_ip', 'user.failed_login_user'])) { return TRUE; } // 其他洪水检查保持系统默认逻辑 return NULL; }
启用该模块后,登录输错密码将不再触发封禁。
3. 使用Drush命令快速调整配置
如果有Drush环境,可以直接通过命令修改配置项,无需编辑文件:
drush config-set user.flood limit 999999 drush config-set user.flood interval 1 drush config-set user.flood ip_limit 999999 drush config-set user.flood ip_interval 1 drush config-set user.flood user_limit 999999 drush config-set user.flood user_interval 1
执行后刷新缓存即可生效,效果与修改settings.php一致。
4. 修改核心代码(不推荐)
注意:修改核心文件会导致Drupal升级时丢失更改,仅作为最后手段:
找到core/modules/user/user.module中的user_flood_control函数,修改为直接返回TRUE:
function user_flood_control($name, $threshold, $interval, $identifier = NULL) { // 跳过所有洪水检查 return TRUE; // 注释掉原有的检查逻辑 // ... }
内容的提问来源于stack exchange,提问作者Csámpai Elemér
相关产品推荐
相关产品推荐

