2011-02-09 108 views
1

我的Java應用程序託管在與Drupal網站相同的域中。 這個Java應用程序從瀏覽器獲取客戶端請求(所以我可以訪問所有的cookie)。是否有可能使用我在Java應用程序中獲取的cookie來檢查客戶端是否從同一瀏覽器登錄到Drupal?從Java應用程序訪問當前登錄的Drupal用戶

我想過使用XML-RPC從Java應用程序執行請求,Drupal的服務模塊,但我無法找到一個方法來獲取信息有關當前用戶提供的cookie數據記錄。

任何想法?

非常感謝。

PS:我使用的是新安裝的Drupal 7.如果你的Drupal 6例如,它會做的工作。 謝謝。

回答

0

好吧,如果你能得到的會話ID,你可以打會話表,看是否存在具有相同的SID(會話ID = SID)表的任何行。如果uid不是0,則用戶已登錄,然後可以從那裏查找他們是誰。

+0

謝謝你的回答! 我想知道是否有一種方法不需要直接訪問數據庫。我寧願使用一些API,因爲數據庫模式可以在升級之間改變...... – 2011-02-10 19:29:59

0

有點晚了我的答案,但我建議你寫的Drupal模塊可插到它的XML-RPC的能力和做的工作適合你。

換句話說,您將從您的Java應用程序(http://ws.apache.org/xmlrpc/client.html)發出一個XML-RPC請求到您的Drupal站點上由該模塊控制的路徑(比如說'example.com/user/is-logged-in')。 Drupal模塊將'控制'該路徑,並接收所有請求。從那裏開始,Drupal模塊做一個簡單的工作就可以對數據庫進行查詢,以查明會話是否與登錄用戶相關聯(如果關聯用戶爲0,那麼用戶沒有登錄 - 否則用戶登錄在)。然後Drupal模塊會簡單地返回true或false(如果這是可取的,或者更詳細的用戶細節數組)。

我馬上要開展一個類似的案件,並可能會走這條路。就我而言,我有一個提供文件下載的Drupal站點。下載需要通過Java servlet完成,但只有登錄的用戶才能下載。因此,servlet將聯繫Drupal站點以檢查cookie中提供的具有會話ID的用戶是否已登錄,然後確定是否應該開始下載。

換句話說:

爪哇 - > XML-RPC請求 - > Drupal的站點 - > XML-RPC響應 - >的Java。

相關問題