从Java应用程序访问当前登录的Drupal用户

时间:2011-02-09 16:24:35

标签: java drupal xml-rpc drupal-services

我将Java应用程序托管在与Drupal网站相同的域中。 此Java应用程序从浏览器获取客户端请求(因此我可以访问所有cookie)。是否可以使用我在Java应用程序中获取的cookie来检查客户端是否从同一浏览器登录Drupal?

我考虑过使用Java应用程序中的xmlrpc来对Drupal服务模块执行请求,但是我找不到一种方法来获取有关当前登录用户提供cookie数据的信息。

有什么想法吗?

非常感谢。

PS:我正在使用新安装的Drupal 7.如果你有Drupal 6的例子它将完成这项工作。 感谢。

2 个答案:

答案 0 :(得分:0)

好吧,如果你可以获得SESSION id,你可以点击sessions表,看看表中是否有任何行具有相同的sid(SESSION id = sid)。如果uid不为0,则用户已登录,然后您可以从那里查找他们是谁。

答案 1 :(得分:0)

我的回答有点晚了,但是我建议为Drupal编写一个模块,它可以插入XML-RPC功能并为你完成工作。

换句话说,您将从Java应用程序(http://ws.apache.org/xmlrpc/client.html)向模块控制的Drupal站点上的路径发出XML-RPC请求(比如' example.com/user/is-logged-in')。 Drupal模块将“控制”该路径,并接收所有请求。从那里开始,Drupal模块可以轻松地对数据库进行查询,以确定会话是否与登录用户相关联(如果关联用户为0,则用户未登录 - 否则用户将被登录在)。然后,Drupal模块将返回true或false(如果需要,或者更详细的用户详细信息数组)。

我很快就会处理一个类似的案子,并且可能会走这条路。就我而言,我有一个提供文件下载的Drupal站点。下载需要通过Java servlet完成,但只允许下载的人员下载。因此,servlet将联系Drupal站点以检查cookie中提供的具有会话ID的用户是否已登录,然后确定是否应该开始下载。

换句话说:

Java - > XML-RPC请求 - > Drupal网站 - > XML-RPC响应 - > Java的。