在Wordpress中登录期间如何重定向用户?

时间:2018-10-29 02:08:53

标签: php wordpress woocommerce

我在自定义的Wordpress页面上为用户添加了一个选项,用户可以在其中为自己的帐户设置双向身份验证。当用户启用双向身份验证时,我将生成的种子保存到他的用户meta中。现在我遇到了一个问题,因为我不知道如何在登录过程中进行检查。

我认为先进行常规登录然后检查用户是否启用了安全功能可能是一个不错的选择。如果是,我可以在登录后将他重定向到自定义页面,在该页面中必须输入验证码。当代码正确时,我可以继续登录。这样可以吗?因为当他已经登录并单击帐户页面时,用户可以看到页面内容,因此该安全功能将被废弃并且不再需要。

有没有人知道Wordpress,可以帮助/说出我可以添加此验证的最佳钩子或位置?

这不是编码我的员工的问题!当我知道地点和正确的流程后,我会自己做所有的事情。

描述我的用例的图片:

enter image description here

2 个答案:

答案 0 :(得分:1)

基本思想是:使用会话/ 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');

答案 1 :(得分:0)

这可以解决您必须检查是否已在此功能中启用身份验证并将用户重定向到您的页面的问题

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

}

add_filter('login_redirect', 'admin_default_page');