Ich arbeite an einer Ajax-Anwendung, die in eine WordPress-Seite eingebettet wird. Die Ajax-App tauscht Daten mit Servlets aus, die auf Tomcat ausgeführt werden. Jetzt benötigen die Servlets eine Möglichkeit, um festzustellen, ob eine Anforderung von einem Benutzer stammt, der bei WordPress angemeldet ist. Wenn der Benutzer angemeldet ist, müssen die Servlets auch die Benutzer-ID ermitteln können, um die Datenbank abfragen zu können. Wenn der Benutzer nicht angemeldet ist, wird die Anforderung abgelehnt.
Mit anderen Worten, ich muss ein Servlet nur dann eine Anforderung ausführen lassen, wenn der Benutzer, der die Anforderung verursacht hat, bei WordPress (Version 3.3.x) angemeldet ist. Sowohl das Servlet (Tomcat) als auch WordPress (Apache2) werden auf demselben physischen Computer ausgeführt und verwenden dieselbe Datenbank.
Theoretisch könnte dies leicht durch Folgendes gelöst werden:
- Während der WordPress-Anmeldung wird ein Benutzertoken in einer Javascript-Variablen gespeichert.
- Die Ajax-App leitet das Benutzertoken bei jedem Aufruf an die Servlets weiter.
- Die Servlets verwenden das Token, um WordPress abzufragen, ob es gültig ist (dh wenn der Benutzer angemeldet ist) und die Anforderung auszuführen oder abzulehnen.
Die Frage ist, wie dies auf der WordPress-Seite umgesetzt werden kann.
Denn was die Theorie so kompliziert macht, ist die Tatsache, dass ich noch keine PHP-Programmierung durchgeführt habe.
Zuerst dachte ich daran, das Cookie wordpress_logged_in (auth) an das Servlet zu übertragen und das Servlet WordPress abfragen zu lassen, wenn das Cookie auth noch gültig ist. Dies scheint jedoch nicht möglich zu sein, da wp_validate_auth_cookie () immer fehlschlägt, selbst wenn Cookie-Daten eines angemeldeten Benutzers übergeben werden. Eine andere Lösung könnte darin bestehen, ein Plugin zu entwickeln, das die Sitzungs- und Benutzer-ID in einer Tabelle speichert, die von den Servlets leicht abgefragt werden kann. Oder vielleicht gibt es eine andere Lösung ...