it-swarm.com.de

WP set auth cookie using Ajax wird nicht im browser gespeichert

Wir erstellen ein externes Dashboard, das Wordpress-Daten verwendet. Offensichtlich verwenden wir WP REST API v2

Wir möchten eine vollständige Trennung vom traditionellen WP Dashboard, aber wir möchten uns auch als Benutzer "hinter den Kulissen" bei WP Admin Dashboard anmelden, also wir können Benutzer zu einigen umleiten Plugin Admin UI Seiten; aufgrund der Einschränkung der WP REST API

Dies ist, was wir getan haben, wir haben ein benutzerdefiniertes Plugin erstellt, das die unten stehende Funktion createAuthkey hat, mit der sich der Benutzer anmeldet und dann einen Schlüssel (Token) erstellt.

Der wichtige Teil, den uns interessiert, ist, ob die Anmeldung erfolgreich ist (wp_authenticate ()), wir wollen auch das wp_auth_cookie im Browser speichern, also auch wenn der Benutzer nicht direkt bei/wp-admin angemeldet ist, wenn jetzt der Browser Wenn Sie WP Administrationsseiten eingeben, möchten wir, dass diese angemeldet sind und verwenden daher wp_set_auth_cookie (), aber die AJAX Antwort speichert den zurückgegebenen Cookie NICHT in der Browser-Ressourcen (die jedoch als Antwort korrekt zurückgegeben werden und werden daher abgemeldet, wenn der Benutzer zur Verwaltungsseite WP umgeleitet wird

function createAuthKey( WP_REST_Request $request )
{
    // Get login information
    $username   = $request->get_param( 'username' );
    $password   = $request->get_param( 'password' );

    $user = wp_authenticate( $username, $password );

    if ( is_wp_error( $user ) ) {
     return false;
    }

    $converter = new Encryption;
    $encoded = $converter->encode($username . ":" . $password);

    // Set Cookie: NOT SAVED TO BROWSER!!!
    wp_set_auth_cookie($user->ID, true);

    return ['key' => $encoded, 'cookie' => $_COOKIE];
}
4
Nizar Blond

Ich gehe davon aus, dass sich Ihr benutzerdefiniertes Dashboard in einer anderen Domain/Subdomain befindet als die WordPress-Installation. Cookies können nur für die aktuelle Domain gesetzt werden.

In der Regel funktionieren Cookies nicht domänenübergreifend. Daher kann Ihr Dashboard kein Cookie für die WordPress-Website erstellen. Theoretisch ist es möglich, einige Serverkonfigurationen zu umgehen, aber diese Technik muss vom Browser des Benutzers unterstützt werden.

1
Philipp