Как я могу перенаправить пользователя при входе в Wordpress? - PullRequest
0 голосов
/ 29 октября 2018

Я добавил опцию для моих пользователей на пользовательскую страницу Wordpress, где пользователь может настроить двухстороннюю аутентификацию для своей учетной записи. Когда пользователь активирует двухстороннюю аутентификацию, я сохраняю сгенерированное начальное число в его метаданных пользователя. Теперь у меня проблема, потому что я не знаю, как я могу проверить это во время входа в систему.

Я подумал, что было бы неплохо сначала выполнить обычный вход в систему, а затем проверить, активировал ли пользователь функцию безопасности. Если да, я мог бы перенаправить его на пользовательскую страницу после входа в систему, где я должен ввести проверочный код. Когда код правильный, я могу продолжить вход в систему. Это возможно таким образом? Поскольку, когда он уже вошел в систему и щелкнул страницу учетной записи, пользователь может видеть содержимое страницы, поэтому эта функция безопасности становится ненужной и больше не нужна.

Есть ли кто-то, кто знает Wordpress и может помочь / сказать мне лучший хук или место, где я могу добавить эту проверку?

Это не вопрос кодирования моих сотрудников! Я сделаю все это самостоятельно, когда узнаю место и правильный процесс.

Картинка с описанием моего варианта использования:

enter image description here

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Основная идея: используйте сеанс / cookie (выберите тот, который вам больше подходит), чтобы идентифицировать двухфакторную аутентификацию. Вы можете подключить их в init.

Вот краткий пример (не проверенный, но надеюсь, что вы поймете идею):

function twofactor_check () {
    //no need to do anything, if user is not logged in
    if ( !is_user_logged_in() ) {
        return;
    }

    //check two factor
    $two_factor_enabled = 'check if enabled';

    //no headache when two factor is disabled
    if ( !$two_factor_enabled ) {
        return;
    }

    //twofactor is already passed
    if ( isset($_SESSION['two_factor_verified'] ) && $_SESSION['two_factor_verified'] == 'twofactor_passed' ) {
        return;
    }

    if ( session_status() == PHP_SESSION_NONE ) {
        session_start();
    }

    //twofactor not passed. user will only get landing page.
    if ( !isset($_SESSION['two_factor_verified'] ) ) {
        $_SESSION['two_factor_verified'] = 'started';
        wp_redirect( 'url_to_two_factor_code_landing_page' );
        exit;
    }

    //on your landing page, when passed, set $_SESSION['two_factor_verified'] to 'twofactor_passed'.
    //and when failed, destroy $_SESSION['two_factor_verified'], so user can only access landing page before verifying twofactor.
    //destry $_SESSION['two_factor_verified'], when users log out. you can use 'wp_logout' hook.
}
add_action('init', 'twofactor_check');
0 голосов
/ 29 октября 2018

Это может решить проблему, которую вы должны проверить, включена ли аутентификация в этой функции и перенаправить пользователя на вашу страницу

function admin_default_page() {
  if(auth == 'yes'){
    return '/add-redirect-url-here';
  }

}

add_filter('login_redirect', 'admin_default_page');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...