Estoy trabajando en una aplicación ajax que se incrustará en una página de wordpress. La aplicación ajax intercambia datos con servlets que se ejecutan en tomcat. Ahora los servlets necesitan una forma de determinar si una solicitud proviene de un usuario que ha iniciado sesión en WordPress. Y si el usuario ha iniciado sesión, los servlets también deben poder determinar la identificación de los usuarios para poder consultar la base de datos. Si el usuario no está registrado, la solicitud será denegada.
En otras palabras, necesito dejar que un servlet realice una solicitud solo si el usuario que causó la solicitud ha iniciado sesión en wordpress (versión 3.3.x). Tanto el servlet (tomcat) como wordpress (apache2) se ejecutan en la misma máquina física y comparten la misma base de datos.
En teoría, esto podría resolverse fácilmente haciendo lo siguiente:
- Durante el inicio de sesión de WordPress, algunos tokens de usuario se almacenan en una variable de JavaScript.
- La aplicación ajax reenvía el token de usuario a los servlets en cada llamada.
- Los servlets usan el token para consultar wordpress si es válido (es decir, si el usuario ha iniciado sesión) y realizar o rechazar la solicitud.
La pregunta es cómo se puede implementar esto en el lado de WordPress.
Porque, lo que hace que la teoría sea tan complicada es el hecho de que todavía no he hecho ninguna programación php.
Primero estaba pensando en transmitir la cookie wordpress_logged_in (auth) al servlet y dejar que el servlet consulte wordpress si la cookie de autenticación sigue siendo válida. Pero como parece, esto no se puede hacer, ya que wp_validate_auth_cookie () siempre falla, incluso si se pasan los datos de cookies de un usuario conectado. Otra solución podría ser desarrollar un complemento que almacene el ID de sesión y el ID de usuario en una tabla, que los servlets podrían consultar fácilmente. O tal vez hay otra solución ...