You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过代码关闭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. 自定义模块实现钩子覆盖

通过自定义模块的钩子,精准跳过登录相关的洪水检查,不影响其他功能:

  1. 创建一个简单的自定义模块(如custom_flood_disable)
  2. 在模块的.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 11:53:25