首页 问答 正文

如何在WordPress中添加限制登录尝试次数

注册会员 / 悠然自学 / 2023-06-11/ 浏览 167 次

可以通过安装第三方插件来实现限制WordPress登录尝试次数的功能。以下是一个常用的插件:

1. 插件名称:Limit Login Attempts Reloaded

此插件可以设置登录尝试次数以及失败的时间间隔。如果用户在规定的时间内多次尝试,将会被锁定,直到管理员手动解锁。插件下载链接:Limit Login Attempts Reloaded

2. 插件名称:Login LockDown

此插件可以根据IP地址和时间戳限制用户登录的次数。如果达到限制,将会暂时禁用该IP地址。插件下载链接:Login LockDown

3. 代码示例

以下是用于限制登录尝试次数的示例代码:

add_action('wp_login_failed', 'custom_login_failed');
function custom_login_failed($username){
    $ip = $_SERVER['REMOTE_ADDR'];
    $user = get_user_by('login', $username);
    if($user){
        $uid = $user->ID;
        $loginAttempts = get_user_meta($uid, 'login_attempts', true);
        $loginAttempts++;
        if($loginAttempts >= 5){
            add_action('wp_login', 'custom_login_locked');
            $currentTime = current_time('timestamp');
            add_user_meta($uid, 'login_locked_until', $currentTime + 600, true);
        }else{
            update_user_meta($uid, 'login_attempts', $loginAttempts);
        }
    }
}

function custom_login_locked($username){
    $user = get_user_by('login', $username);
    if($user){
        $uid = $user->ID;
        delete_user_meta($uid, 'login_attempts');
    }
    wp_die('登录失败次数过多,请稍后重试。');
}

add_action('login_init', 'custom_login_check_locked');
function custom_login_check_locked(){
    $ip = $_SERVER['REMOTE_ADDR'];
    $user = get_user_by('ip', $ip);
    if($user){
        $uid = $user->ID;
        $lockedUntil = get_user_meta($uid, 'login_locked_until', true);
        $currentTime = current_time('timestamp');
        if($currentTime < $lockedUntil){
            wp_die('登录失败次数过多,请稍后重试。');
        }else{
            delete_user_meta($uid, 'login_locked_until');
        }
    }
} 

代码中的示例限制了每个用户最多尝试登录5次。如果达到限制将会锁定用户10分钟。可以根据需要进行修改。

大家谈论
    我的见解