WP configura la cookie de autenticación usando Ajax no se guarda en el navegador

4

Estamos creando un panel de control externo que usa datos de Wordpress, obviamente, usamos WP REST API v2

Queremos una separación total del WP Dashboard tradicional, pero también queremos iniciar la sesión del usuario "detrás de la escena" en WP Admin Dashboard, por lo que podemos redirigir al usuario a algunas páginas de la interfaz de usuario del administrador del complemento; debido a la limitación de la API REST de WP

Esto es lo que hicimos, creamos un complemento personalizado que tiene la función createAuthkey a continuación que hace inicios de sesión en el usuario y luego crea una clave (token).

La parte importante que nos importa es si el inicio de sesión se realiza correctamente (wp_authenticate ()), también queremos guardar el wp_auth_cookie en el navegador, por lo que incluso si el usuario no ha iniciado sesión directamente en / wp-admin, si ahora el navegador ingresa a las páginas de administración de WP, queremos que inicien sesión y, por lo tanto, usamos wp_set_auth_cookie (), pero la respuesta AJAX NO guarda la cookie devuelta en los recursos del navegador (pero la devuelve correctamente respuesta) y, por lo tanto, cuando el usuario se redirige a la página de administración de WP, se desconecta

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];
}
    
pregunta Nizar Blond 03.02.2016 - 23:12

1 respuesta

1

Supongo que su panel personalizado está en un dominio / subdominio diferente al de la instalación de WordPress. Las cookies solo se pueden configurar para el dominio actual.

Normalmente, las cookies no funcionarán en varios dominios. Por lo tanto, su panel de control no puede crear una cookie para el sitio web de WordPress. En teoría, es posible omitirlo con algunas configuraciones de servidor, pero esta técnica tiene que ser compatible con el navegador de los usuarios.

    
respondido por el Philipp 08.06.2017 - 22:55

Lea otras preguntas en las etiquetas