繁体   English   中英

WordPress的Ajax登录系统出现问题-302

[英]Trouble with Wordpress Ajax Login System - 302

我正在尝试使用Wordpress创建一个简单的Ajax登录系统。 不幸的是,每当“ wp_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
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM