0

私はgae-sessionsを使用しています。クライアントはiOSアプリケーションであり、セッションをアプリの存続期間中持続させたい(したがって、セッションが期限切れになるか無効になる唯一の方法は、ユーザーがログアウトするか、ユーザーがアプリを削除するときです。それ以外の場合、セッションには有効期限がありません日にち)。クッキーは短命なので、私はクッキーを使いたくないと思います(または私がすべきですか?)

つまり、私が行っているのは、新しいセッションを作成し、そのセッション用に自動的に生成されたSID(セッションID、ランダムな文字列)を取得し、その文字列をクライアントに返送して、そこに永久に保存することです。これで、ユーザーがリクエストを送信するたびに、セッションIDも送信され、このIDを使用して現在のセッションを取得します。

# gets the session with given session id
session = gaesessions.Session(sid = session_id)

まず、このアプローチに何か問題がありますか?これを行うためのより良い方法はありますか?

これで、ユーザーがログアウトしたときに、指定されたIDでセッションを無効にするリクエストを簡単に送信できます。ただし、ユーザーがアプリを削除した場合、そのセッションを取得して削除する方法はありません。では、無効になったセッションをどのようにクリーンアップしますか?

4

1 に答える 1

1

なぜセッションが必要なのかしら。データストア内のユーザーごとのオブジェクトにデータを保存するだけです。そうすれば、そのユーザーを簡単に参照できます。セッション以外のユーザーデータを既に保存していると思います。

ただし、この回答では問題は解決しません。ユーザーがアプリを削除したかどうかはわからないため、そのユーザーデータは永久に保持されます。これは、技術的な質問というよりも、ポリシーに関する質問です。

ユーザーデータを削除したい場合は、なんらかのポリシーを設定する必要があります(つまり、2年間ログインしていない場合は、アカウントが削除されます)。その場合、有効期限は基本的に2年です。定期的に実行され、期限切れのユーザー(またはセッション)をクリーンアップするcronジョブが必要になります。

ところで、gae-sessionsには、cronハンドラーを含む、期限切れのセッションのクリーンアップコードの例が含まれています。

于 2012-09-01T04:15:37.680 に答える