2011-02-09 4 views
1

私はJavaアプリケーションをDrupal Webサイトと同じドメインでホストしています。 このJavaアプリケーションはブラウザからクライアント要求を取得します(したがって、すべてのCookieにアクセスできます)。クライアントが同じブラウザからDrupalにログインしたかどうかを確認するために、Javaアプリケーションで取得するクッキーを使用することは可能ですか?現在ログインしているJavaアプリケーションからのDrupalユーザーへのアクセス

Javaアプリケーションからxmlrpcを使用してDrupalサービスモジュールにリクエストを実行することについて考えましたが、現在ログインしているユーザーがCookieデータを提供しているという情報を取得する方法が見つかりませんでした。

アイデア?

ありがとうございます。

PS:私は新しくインストールされたDrupal 7を使用しています。Drupal 6の例があれば、その作業を行います。おかげさまで

答えて

0

SESSION IDを取得できる場合は、セッションテーブルをヒットして、同じsid(SESSION id = sid)を持つ行がテーブルにあるかどうかを確認できます。 uidが0でない場合、ユーザはログインしているので、そこから誰がいるかを調べることができます。

+0

お返事ありがとうございます! DBに直接アクセスする必要がない方法があるのだろうかと思っていました。 DBスキーマがアップグレード間で変更される可能性があるので、私はむしろいくつかのAPIを使用したいと考えています。 –

+0

@ user610060 Drupalはファイルの代わりにデータベースのセッションデータをすべて管理しているため、データベースにアクセスすることはできません。ブートストラップが起動すると、SESSION idに関連付けられているセッションテーブルの設定に基づいて、ユーザオブジェクトがロードされます。私はDBスキーマがまだ同じバージョンで更新されることは期待していませんが、それはあなた次第です... – mikesir87

0

答えが少し遅れましたが、XML-RPC機能にプラグインするDrupalのモジュールを書くことをお勧めします。

つまり、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サーブレット経由で行う必要がありますが、ログインしている人だけがダウンロードを許可されるべきです。したがって、サーブレットはDrupalサイトにアクセスして、Cookieに提供されたセッションIDを持つユーザーがログインしているかどうかを確認し、ダウンロードを開始するかどうかを決定します。言い換えれば

のJava - > XML-RPC要求 - > Drupalのサイト - > XML-RPCの応答 - > Javaの。

関連する問題