WordPress禁止同个账号同时多人多设备登录

默认情况下,WordPress 用户可以同时在多台电脑上登录后台,这可能会给你的站点带来一些安全隐患,比如你在一台公共电脑上登录了一下 WordPress 后台,忘记退出了。如果用户不能在两台电脑上同时登录,你在自己的电脑上登录之后,其他电脑上的登录就会被注销掉,这样就解决了这个安全隐患。本文将为大家介绍WordPress 禁止一个用户在两台电脑上同时登录的方法。

对于开放注册的 WordPress 站点来说,尤其是有会员购买服务的站点,可能需要禁止用户共享账号,也就是要禁止多个人同时登录一个账号。倡萌今天分享老外的一个方法,大家不妨试试。

将下面的代码到主题的 functions.php 中即可:

/**
 * 检测当前用户是否拥有并发会话
 *
 */
function pcl_user_has_concurrent_sessions() {
    return ( is_user_logged_in() && count( wp_get_all_sessions() ) > 1 );
}

/**
 * 获取用户的当前会话数组
 *
 */
function pcl_get_current_session() {
    $sessions = WP_Session_Tokens::get_instance( get_current_user_id() );
    return $sessions->get( wp_get_session_token() );
}

/**
 * 只允许每个用户拥有一个会话
 *
 * 如果当前用户的会话被新会话接管,则会自动销毁其会话,
 * 他们需要重新登录才能继续操作。
 *
 */
function pcl_disallow_account_sharing() {
    if ( ! pcl_user_has_concurrent_sessions() ) {
        return;
    }
    $newest  = max( wp_list_pluck( wp_get_all_sessions(), 'login' ) );
    $session = pcl_get_current_session();
    if ( $session['login'] === $newest ) {
        wp_destroy_other_sessions();
    } else {
        wp_destroy_current_session();
    }
}
add_action( 'init', 'pcl_disallow_account_sharing' );

此代码全部用户受限

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称

    暂无评论内容