ユーザーが手動または他の方法ですべての Cookie を削除した場合、以前のセッション データを取得したいと考えています。セッションとグローバルにもデータを保存しているため、セッションが破棄されるたびにグローバルからそのデータを削除する必要があります。
2 に答える
ユーザーがすべてのCookieを削除した場合、そのユーザーはCookieを持たないユーザーですよね?では、このユーザーと他のユーザーをどのように区別しますか?これは非常に難しい問題であり、信頼できる解決策があるとは思えません。
たとえば、IPでユーザーを識別したいが、IPが変更される場合があります(動的IP)。(FlashSocketの)WebSocket接続を作成してユーザーを識別し、開いたままにしておくこともできますが、これはユーザーがページを表示した場合にのみ機能します(手動で閉じることもできます)。
したがって、以前のセッションは忘れてください。セッションデータをクリーンアップする必要がある場合は、CRONジョブまたはバックグラウンドスレッド(またはNode.JSの場合はバックグラウンド非同期ジョブ)を作成します。これにより、定期的に実行されます。または、パッシブクリーニングを使用することもできます。つまり、セッションのメカニズムを実装して、(事前定義された)メモリ制限に近づくと自動的にクリーニングします(これは、新しいセッションを作成するときに発生するはずです)。
セッションが redis で自動的に期限切れになるように設定したので、時間の経過とともに自動的にクリーンアップされます。残念ながら、これを正確にどのように行ったかを忘れています。これはデータベースのプロパティだと思います。
誰かがログアウトすると、セッションが破棄されます。
req.session.destroy(function(){
//session has been destroyed
});