Pracuję nad aplikacją ajax, która zostanie osadzona na stronie wordpress. Aplikacja ajax wymienia dane z serwletami działającymi na tomcat. Teraz serwlety potrzebują sposobu, aby ustalić, czy żądanie pochodzi od użytkownika zalogowanego do wordpress. A jeśli użytkownik jest zalogowany, serwlety muszą także być w stanie określić identyfikator użytkownika, aby móc wysłać zapytanie do bazy danych. Jeśli użytkownik nie jest zalogowany, żądanie zostanie odrzucone.
Innymi słowy, muszę pozwolić serwletowi wykonać żądanie tylko wtedy, gdy użytkownik, który spowodował żądanie, jest zalogowany w wordpress (wersja 3.3.x). Zarówno serwlet (tomcat), jak i wordpress (apache2) działają na tej samej maszynie fizycznej i współużytkują tę samą bazę danych.
Teoretycznie można to łatwo rozwiązać, wykonując następujące czynności:
- Podczas logowania wordpressa token użytkownika jest przechowywany w zmiennej javascript.
- Aplikacja ajax przekazuje token użytkownika do serwletów przy każdym wywołaniu.
- Serwlety używają tokena do zapytania o wordpress, jeśli jest on prawidłowy (tj. Jeśli użytkownik jest zalogowany) i wykonania lub odrzucenia żądania.
Pytanie brzmi, jak można to zaimplementować po stronie wordpress?
Ponieważ to, co czyni teorię tak skomplikowaną, to fakt, że nie zrobiłem jeszcze żadnego programowania php.
Najpierw myślałem o przesłaniu ciasteczka wordpress_logged_in (auth) do serwletu i pozwoliłem, aby serwlet zapytał o słowo, jeśli plik cookie auth jest nadal ważny. Ale jak się wydaje, nie można tego zrobić, ponieważ wp_validate_auth_cookie () zawsze kończy się niepowodzeniem, nawet jeśli przekazywane są dane cookie zalogowanego użytkownika. Innym rozwiązaniem może być opracowanie wtyczki przechowującej identyfikator sesji i identyfikator użytkownika w tabeli, do której aplety mogłyby łatwo zapytać. A może istnieje inne rozwiązanie ...