0

ユーザーが手動または他の方法ですべての Cookie を削除した場合、以前のセッション データを取得したいと考えています。セッションとグローバルにもデータを保存しているため、セッションが破棄されるたびにグローバルからそのデータを削除する必要があります。

4

2 に答える 2

2

ユーザーがすべてのCookieを削除した場合、そのユーザーはCookieを持たないユーザーですよね?では、このユーザーと他のユーザーをどのように区別しますか?これは非常に難しい問題であり、信頼できる解決策があるとは思えません。

たとえば、IPでユーザーを識別したいが、IPが変更される場合があります(動的IP)。(FlashSocketの)WebSocket接続を作成してユーザーを識別し、開いたままにしておくこともできますが、これはユーザーがページを表示した場合にのみ機能します(手動で閉じることもできます)。

したがって、以前のセッションは忘れてください。セッションデータをクリーンアップする必要がある場合は、CRONジョブまたはバックグラウンドスレッド(またはNode.JSの場合はバックグラウンド非同期ジョブ)を作成します。これにより、定期的に実行されます。または、パッシブクリーニングを使用することもできます。つまり、セッションのメカニズムを実装して、(事前定義された)メモリ制限に近づくと自動的にクリーニングします(これは、新しいセッションを作成するときに発生するはずです)。

于 2012-10-16T08:16:14.343 に答える
0

セッションが redis で自動的に期限切れになるように設定したので、時間の経過とともに自動的にクリーンアップされます。残念ながら、これを正確にどのように行ったかを忘れています。これはデータベースのプロパティだと思います。

誰かがログアウトすると、セッションが破棄されます。

req.session.destroy(function(){
 //session has been destroyed
});
于 2012-10-16T09:11:32.850 に答える