WordPress AJAX登录系统出现故障-302

时间:2015-07-02 作者:Lancelot

我试图用Wordpress创建一个简单的Ajax登录系统。不幸的是,每次启动“wp\\u signon”功能时,我的系统都会出现故障,而我所掌握的唯一信息是:

POST myurl/wp-admin/admin-ajax.php - 302 Found 
GET  myurl/?login = failed - 200 Found
因此,无论我是否尝试使用良好的信息登录,我的JS脚本都会出现在Ajax函数的“错误部分”。

谁能告诉我我做错了什么吗?我们将不胜感激!

非常感谢!

JS公司:

jQuery(document).on(\'submit\', loginForm, function(event) {

    event.preventDefault();

    var usernameVal = jQuery(\'.modal-login .login-form #user_login\').val();
    var passwordVal = jQuery(\'.modal-login .login-form #user_pass\').val();
    var remembermeField = jQuery(\'.modal-login .login-form #rememberme\');
    var securityVal = jQuery(\'.modal-login .login-form #security\').val();

    if ( remembermeField.prop(\'checked\') ) {
        var remembermeVal = \'true\';
    } else {
        var remembermeVal = \'false\';
    }

    jQuery.ajax({
        type : "post",
        url : data_front_end_users_management.ajaxurl,
        dataType: \'json\',
        data: { 
            action: \'AuthUserAjax\',
            username: usernameVal, 
            password: passwordVal, 
            rememberme: remembermeVal,
            security: securityVal
        },
        success: function(data) {

            if ( data[\'answer\'] === 1 ) {

                modalAlert( msgRow, msgAlert, msgContent, false, \'alert-success\', \'alert-danger\', data[\'message\'] );


            } else {

                modalAlert( msgRow, msgAlert, msgContent, false, \'alert-danger\', \'alert-success\', data[\'message\'] );

            }

        //END success    
        },
        error: function () {

            modalAlert( msgRow, msgAlert, msgContent, false, \'alert-danger\', \'alert-success\', defaultError );

        }

    //END ajax
    });

//END jQuery(document).on(\'submit\', loginForm, function(event)
});
措施:

function AuthUserAjax() {

    $LoginController = new FELoginController();

    $value = array();
    $value[\'answer\'] = 0;
    $value[\'message\'] = \'\';

    $username = trim($_POST[\'username\']);
    $password = trim($_POST[\'password\']);
    $rememberme = $_POST[\'rememberme\'];
    $security = $_POST[\'security\'];

    if ( $LoginController->checkAuthInfosFilled( $username, $password ) ) {

        $user = $LoginController->UserAuth( $username, $password, $rememberme );

        if ( $user ) {

            if ( is_wp_error( $user ) ) {

                $value[\'answer\'] = 0;
                $value[\'message\'] = $user->get_error_message();

            } else {

                $value[\'answer\'] = 1;
                $value[\'message\'] = \'Success.\';

            }

        //END if ( $user )
        } else {

            $value[\'answer\'] = 0;
            $value[\'message\'] = \'Wrong username or password.\';

        }

    } else {

        $value[\'answer\'] = 0;
        $value[\'message\'] = \'Please, enter your username and your password.\';

    }

    $data = json_encode($value);

    die( $data );

//END AuthUserAjax 
}

add_action( \'wp_ajax_AuthUserAjax\',\'AuthUserAjax\' );
add_action( \'wp_ajax_nopriv_AuthUserAjax\',\'AuthUserAjax\' );
控制器:

public function UserAuth( $username, $password, $rememberme ) {

    if ( check_ajax_referer( \'ajax-login-nonce\', \'security\' ) ) {

        $creds = array();
        $creds[\'user_login\'] = $username;
        $creds[\'user_password\'] = $password;

        if ( $rememberme == \'true\' || $rememberme == true ) {
            $creds[\'remember\'] = true;
        } else {
            $creds[\'remember\'] = false;
        }

        $user = wp_signon( $creds, false );

        return $user;

    } else {

        return false;

    }

//END UserAuth
}

1 个回复
SO网友:Lancelot

因此,经过数小时的搜索,我终于找到了问题所在:我的类中的另一个方法干扰了我的ajax身份验证系统。

结束

相关推荐

是否有可用于AJAX调用的操作或过滤器?

我对为Ajax调用编写缓存函数很感兴趣。如果第三方插件执行其操作,则调用wp_ajax_whatever, 我怎么才能把它摘下来?如果某人使用使用Ajax插件进行幻灯片更新,例如:。wp_ajax_plugin_update_slider, 发生这种情况时,我想清空模板缓存。我该怎么做?