1

ユーザーログインのある Drupal サイトがあります。このサイトには Flash アプリケーションが埋め込まれており、一部のデータをすべてのユーザーに表示しますが、ユーザーがログオンしている場合は追加機能を使用できます。Flash 内から、XMLRPC を使用して system.check メソッド (ユーザーがログインしているかどうかを判断するため) と user.login メソッド (Flash 内からユーザーをログインさせるため) にアクセスしています。

Flash 内では、すべて正常に動作します。ただし、Flash ログイン状態は、サイトの残りの部分に対応していないようです。たとえば、XMLRPC 経由で user.login を呼び出した場合、その後の system.check の呼び出しではログインしていると表示されますが、Drupal ユーザー ページにはまだログアウトしていると表示されます。または、両方の場所にログインしていて、Drupal ユーザー ページからログアウトした場合、次に system.check を呼び出すと、まだログインしていることがわかります。

Drupal GUI と組み込み Flash アプリの間でログイン状態を一致させるにはどうすればよいですか?

(注: XMLRPC ライブラリは使用していません。必要な XML を手動で構築し、URLRequest オブジェクトを使用して POST メソッドを送信しているだけです。)

編集:この質問と Web プロキシでのテストにより、ユーザー ログイン ページから返された SESS Cookie が取得され、フラッシュ アプリケーションによって送り返されていることを確認しました。

編集: そして今、Flash (Safari 経由) が同じ Cookie を送信している場合でも、XMLRPC サービスに接続すると、HTML ページを要求したときとは異なる Cookie が返されることを実験的に示しました。言い換えれば、Drupal はこの種の同期をサポートしていないだけで、私は立ち往生しています。以下の回答を受け入れて、正しい軌道に乗せました。

編集: この記事の執筆時点では、AMHPHP は Drupal6 用に完全にはリリースされていませんが、とにかくサイトにインストールされていることが判明しました。DrupalSiteライブラリを使用すると、Flash からサイトへのログインとログアウトを非常に簡単に行うことができ、ログインは Flash と HTML 間で一貫したままでした。

4

2 に答える 2

1

私は Flash にあまり詳しくありませんが、URLRequest オブジェクトは、ユーザーのログイン Cookie を含め、ブラウザー セッションから状態を「継承」しますか? そうでない場合は、手動で作成したリクエストでログイン cookie を明示的に送信する必要があります。そうしないと、Drupal は同じ IP アドレスの別の Web ブラウザから来ていると判断します。

よくわからない場合は、Firebugプラグインを使用すると便利な場合があります。ブラウザーを介してパイプされているすべての要求を検査し、それらのヘッダーを調べて、返される生の HTTP 応答オブジェクトを調べることができます。

更新: Flash ウィジェットがセッション Cookie を取得することよりもさらに重要なのは、Flash ウィジェットが Web ブラウザー自体と同じセッション Cookie を取得することです。Drupal では、ユーザーが複数のマシンから同時にログインできるため、ブラウザーが 1 つのセッションを作成し、フラッシュ ウィジェットが別のセッションを作成している場合、説明している動作が表示されます...

于 2009-01-21T22:57:56.670 に答える
0

それはできません。

(詳細については、元の質問に対する私の最終編集と、@ Eatonへのコメントにある同等の情報を参照してください。)

于 2009-01-24T02:03:35.233 に答える