0

基本認証を使用するFlexアプリにユーザーが自動的に再ログインできるようにしたい

ちなみに、私はこのStackOverflowの質問に注目しました。これは関連性がありますが、クライアント側のログアウトの質問には対応していません。

たとえば、ユーザーAがログインした後、ユーザーBはブラウザーにアクセスし、ログイン画面(おそらく新しいタブ)に移動してログインします。

これは、HTTPヘッダーでユーザーBの資格情報を送信し、これらはユーザーAの資格情報とは異なるため、サーバーが事実を記録し、新しい別個のセッションを作成することを意味するはずです。

ただし、FlexのHTTPプロキシはヘッダーをキャッチし、実際にはこれらの新しい資格情報を無視します。

Flexはサーバーにログアウトするように指示する方法を提供し、Flexログインコードは資格情報を送信する前に毎回これを呼び出すことができますが、それは醜い回避策のようです。このクライアントサイドでできるようになりたいです。基本認証に非標準のヘッダーを使用することもできますが(サーバー側の認証も制御するため)、それも醜い回避策のようです。

Flexコードからクライアント側でセッションを単純に終了する方法はありますか?これは、たとえばJavaScriptから可能です。

また、JavaScriptでできるように、クライアント側でCookieを直接操作する方法はありますか?

いくつかの制限はセキュリティ上の考慮事項によって引き起こされる可能性があることを理解していますが、私の通信はすべて「ホーム」サーバーに対して行われるため、制限を回避できるはずです。

4

2 に答える 2

1

ここでいくつかの異なる質問をしているようです。

実際には、basic-auth「セッション」自体を手動で終了することはできません(少なくとも私の知る限りではありません)。せいぜい、一種の変数 basic-auth レルムに対して認証できますが、これは機能する場合と機能しない場合がありますが、それ以外の場合は、ブラウザー インスタンスの期間中、最初に認証されたセッションでスタックします。ユーザーがマシンを所有していることが確実でない限り、または各セッションの後にブラウザーを閉じる必要がある場合を除き、通常、これは最善の方法ではありません。

その場合、少なくとも 2 つのオプションが残ります。1 つ目は、URLRequest オブジェクトを使用して資格情報を送信し (あなたが引用した投稿で、その方法を示しています)、資格情報が受け入れられたことを示す何か (GUID など) を HTTP 応答で返すようにすることです。おそらく、サーバー上のいくつかのセッションテーブル(データベースの意味で)に生成および保存されます。次に、連続する HTTP 要求で、その GUID を HTTP ヘッダーで送信するか、各 GET または POST 要求の値として (たとえば、Facebook が API クライアントを処理する方法と同様に) 送信し、その値の適時性をサーバー、そしてすべてがうまくいったら続けてください。「ログアウト」するには、その GUID を無効にするリクエストを送信し、サーバーと Flex アプリ内で必要なクリーンアップを実行するだけで、すべて問題ありません。

もう 1 つの方法は、Cookie を直接操作することです。ただし、Cookie メカニズムは実際にはほとんどが Flex で処理されます。これは、ユーザーに代わってブラウザーによってすべてがやり取りされるためです。たとえば、ユーザー名とパスワードを含む URLRequest を送信し、サーバーが任意の種類の Cookie で応答した場合、その後の各要求は同じ Cookie をパッケージ化して送信するため、ほとんどの場合、必要な作業は次のとおりです。サーバーからの最初の応答を解析し (Flex アプリの状態を設定するため)、Cookie が引き続き存在することを想定し、ログアウトするときは URLRequest を送信してログアウトし、サーバー上の Cookie を強制終了します。 =200 Flex アプリのクリーンアップなどを行います。ただし、Cookie の値に直接アクセスすることは、世界で最も簡単なことではありません。

うまくいけば、それは役に立ちます。幸運を!

于 2009-04-22T21:53:32.960 に答える
0

Flex が HTTP リクエストに追加する信じられないほどの歪みの一部について詳しく説明しているこの投稿にも注意してください。

于 2009-04-23T06:34:19.293 に答える