Tôi đang làm việc trên một ứng dụng ajax sẽ được nhúng vào trang wordpress. Ứng dụng ajax trao đổi dữ liệu với các servlet chạy trên tomcat. Bây giờ các servlet cần một cách để xác định xem một yêu cầu đến từ người dùng đã đăng nhập vào wordpress. Và nếu người dùng đã đăng nhập, các servlet cũng phải có khả năng xác định id người dùng để có thể truy vấn cơ sở dữ liệu. Nếu người dùng không đăng nhập nó, yêu cầu sẽ bị từ chối.
Vì vậy, nói cách khác, tôi cần để cho một servlet chỉ thực hiện một yêu cầu nếu người dùng gây ra yêu cầu được đăng nhập vào wordpress (phiên bản 3.3.x). Cả hai, servlet (tomcat) và wordpress (apache2) đều chạy trên cùng một máy vật lý và chia sẻ cùng một cơ sở dữ liệu.
Về lý thuyết, điều này có thể dễ dàng được giải quyết bằng cách làm như sau:
- Trong quá trình đăng nhập wordpress, một số mã thông báo người dùng được lưu trữ trong một biến javascript.
- Ứng dụng ajax chuyển tiếp mã thông báo người dùng đến các máy chủ trong mỗi cuộc gọi.
- Các servlet sử dụng mã thông báo để truy vấn wordpress nếu nó hợp lệ (nghĩa là nếu người dùng đã đăng nhập) và thực hiện hoặc từ chối yêu cầu.
Câu hỏi là làm thế nào điều này có thể được thực hiện ở phía wordpress?
Bởi vì, điều làm cho lý thuyết trở nên phức tạp là thực tế là tôi chưa thực hiện bất kỳ chương trình php nào.
Đầu tiên tôi nghĩ đến việc truyền cookie wordpress_logged_in (auth) đến servlet và để cho servlet truy vấn wordpress nếu cookie auth vẫn còn hiệu lực. Nhưng dường như, điều này không thể được thực hiện, vì wp_validate_auth_cookie () luôn thất bại, ngay cả khi dữ liệu cookie của người dùng đã đăng nhập được thông qua. Một giải pháp khác có thể là phát triển một plugin lưu trữ sessionid và userid trong một bảng, có thể dễ dàng truy vấn bởi các servlet. Hoặc có thể có một giải pháp khác ...