WordPress-Login mit REST-API?

Lesezeit: 2 Minuten

Leute, ich versuche, einen Endpunkt mit REST-API zu erstellen, der den Benutzer protokolliert, der zum Endpunkt geht. Irgendwelche Ideen, wie man es richtig macht? Hier ist, was ich bisher habe:

function mm_login_user( $request = null ) {
    $response = array();
    $parameters = $request->get_json_params();

    isset( $parameters[ 'user_login' ] ) ? $user_login = sanitize_text_field( $parameters[ 'user_login' ] ) : $user_login = '';
    isset( $parameters[ 'user_password' ] ) ? $user_password = sanitize_text_field( $parameters[ 'user_password' ] ) : $user_password = '';

    $error = new WP_Error();

    if ( empty( $user_login ) ) {
        $error->add( 400, __( "user_login field is required.", 'mm' ), array( 'status' => 400 ) );
        return $error;
    }

    if ( empty( $user_password ) ) {
        $error->add( 400, __( "user_password field is required.", 'mm' ), array( 'status' => 400 ) );
        return $error;
    }

    $creds = array(
        'user_login'    => $user_login,
        'user_password' => $user_password,
        'remember'      => true
    );

    $user = wp_signon( $creds, false );

    if ( is_wp_error( $user ) ) {
        $error->add( 400, __( "Invalid Username or Password.", 'mm' ), array( 'status' => 400 ) );
        return $error;
    }

    wp_set_current_user( $user->ID );
    $auth_cookie = wp_generate_auth_cookie( $user->ID, mm_keep_me_logged_in_for_1_year(), 'auth' );
    $auth_cookie_logged_in = wp_generate_auth_cookie( $user->ID, mm_keep_me_logged_in_for_1_year(), 'logged_in' );
    $response[ 'auth_cookie' ] = $auth_cookie;
    $response[ 'auth_cookie_logged_in' ] = $auth_cookie_logged_in;
    $response[ 'wp_nonce' ] = wp_create_nonce( 'wp_rest' );
    $response[ 'code' ] = 200;
    $response[ 'message' ] = __( "User Logged In.", "mm" );
    set_transient( 'user_id', $user->ID );

    return new WP_REST_Response( $response, 200 );
}

Das Problem hier ist, dass wenn ich versuche, den Benutzer hier anzumelden mit:

wp_set_current_user( $transient, $user->user_login );
wp_set_auth_cookie( $transient, true );

Die Server werfen 502. Deshalb habe ich einen Transient eingestellt, den ich später verwende, um den Benutzer bei „template_redirect“ anzumelden, aber das Problem hier ist, wenn der Benutzer angemeldet ist und jemand anderes den Endpunkt verwendet, tritt er den aktuellen Benutzer und jetzt alle als letzter Benutzer angemeldet, der den Endpunkt verwendet hat. Bitte helft mir ich stecke fest :((

  • Vielleicht versuchen Basic-Authoder verwenden Sie es als Ausgangspunkt, eine andere Lösung, die auf Token und QR-Codes basiert qr-user-login

    – Hyyan Abo Facher

    19. Juli 2018 um 14:48 Uhr


  • QR-Codes?? Häh?

    – Greg Burkett

    19. Juli 2018 um 16:29 Uhr

  • Ich melde mich auch für die Rest-API für Mobiltelefone an, um APIs wie login.registration, verlorenes Passwort und Profil zu bearbeiten. ob es eine lösung gibt. bitte hier posten. es wird die große Hilfe für mich sein.

    – Pramod Kharade

    10. Juni 2019 um 5:45 Uhr

  • Die Lösung ist ziemlich lang und ich kann nur hier einen Link posten – github.com/YuxelOsmanow/wp-login-user-via-api

    – Yuxel Yuseinov

    28. August 2019 um 16:30 Uhr

1435280cookie-checkWordPress-Login mit REST-API?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy