Estou trabalhando em um aplicativo ajax que será incorporado em uma página do wordpress. O aplicativo ajax troca dados com servlets em execução no tomcat. Agora os servlets precisam de uma maneira de determinar se uma solicitação vem de um usuário que está logado no wordpress. E se o usuário estiver conectado, os servlets também deverão poder determinar o ID do usuário para poder consultar o banco de dados. Se o usuário não estiver logado, a solicitação será negada.
Portanto, em outras palavras, eu preciso permitir que um servlet execute uma solicitação apenas se o usuário que causou a solicitação estiver conectado ao wordpress (versão 3.3.x). Tanto o servlet (tomcat) quanto o wordpress (apache2) são executados na mesma máquina física e compartilham o mesmo banco de dados.
Em teoria, isso poderia ser facilmente resolvido fazendo o seguinte:
- Durante o logon do wordpress, algum token do usuário é armazenado em uma variável javascript.
- O aplicativo ajax encaminha o token do usuário para os servlets em todas as chamadas.
- Os servlets usam o token para consultar o wordpress se ele é válido (ou seja, se o usuário estiver logado) e executar ou negar a solicitação.
A questão é como isso pode ser implementado no lado do wordpress?
Porque, o que torna a teoria tão complicada é o fato de eu ainda não ter feito nenhuma programação php.
Primeiro, eu estava pensando em transmitir o cookie wordpress_logged_in (auth) ao servlet e deixar o servlet consultar o wordpress se o cookie de autenticação ainda é válido. Mas, ao que parece, isso não pode ser feito, pois wp_validate_auth_cookie () sempre falha, mesmo que os dados de cookie de um usuário conectado sejam passados. Uma outra solução poderia ser desenvolver um plug-in que armazene o ID da sessão e o ID do usuário em uma tabela, que poderia ser facilmente consultada pelos servlets. Ou talvez haja outra solução ...