2

セッションを維持する最も簡単な方法を使用しています。

1 つの HttpClient を作成し、すべてのサーバー呼び出しに使用するだけで、Cookie などを自動的に処理します..

しかし、ここでの問題は、アプリケーションを閉じると、期待どおりに HttpClient オブジェクトが破棄されているため、ログインできないことです。

だから私はそれをこのように修正しました:

ユーザーの電子メールとパスワードを共有設定に保存し、アプリケーションが起動されるたびにログイン機能を呼び出し (これにより新しいセッションが作成されます)、同じ HttpClient を使用します。

ここでの問題は、Web サーバーのすべてのセッションの有効期限が 3 年であることです。私はセッションを作成していますが(ユーザーがアプリを起動するたびにログインを呼び出しているため)、ユーザーがアプリを起動するたびに。これにより、セッションの重複が発生したり、サーバー側で不要なセッションが作成されたりします。

私はそれを正しい方法でやっていますか?どうすればこれを解決できますか?

ありがとうございました

4

2 に答える 2

0

アプリをバックグラウンドで実行する必要がない限り(たとえば、GPS追跡)、これを行う最も簡単な方法は、アプリを閉じたときにログアウトし、開いたときにログインすることです。必要に応じて、これを自動的に実行して、ユーザーに影響を与えないようにすることができます。ユーザーのメールアドレスとパスワードには引き続き使用できSharedPreferencesます。アプリの起動時に自動的にログインし、アプリの終了時にログアウトするだけです。別の解決策はサーバー側のタイムアウトを下げることですが、それはサーバー設定を変更できるかどうか、またはそのように設定する必要があるかどうかによって異なります。

于 2012-11-08T06:40:08.597 に答える
0

独自の CookieStore を実装するだけです。とても簡単です: BasicCookieStore を拡張し、インスタンス化し、HttpContext に渡します。sqlite データベースに対して保存することも、xml ファイルにダンプすることもできます (ただし、sqlite の方が軽量です)。ここで動作していますが、今はコードをサニタイズする時間がありません。

于 2012-11-08T06:33:52.277 に答える