私は、ユーザーが技術的にブラウザを閉じることがない(したがって新しいセッションキーを取得しない)限り、永遠にログインしたままのサイトを作っています。ここで私は起こっていることがわかります。ユーザーはコンピュータAでブラウザを開いたままにしてから、コンピュータBを使用してログインし、セッションに保存されている名前を変更します。彼らはBをログアウトしますが、Aはまだログインしていて、セッションに古い名前が保存されています。したがって、次回のログアウト時に手動でログアウトしたり、ブラウザを閉じて再度開いたりするときに、その名前は更新されず、remember me機能によってログインされます。ユーザーがログインしたままセッションを処理する最善の方法はありますが、別の更新が原因でセッションキーを更新する必要がありますか?
名前は単純な例ですが、私の場合は自分のアカウントのサブスクリプションレベルは、セッションに格納されており、変更することができます。
これはどのように処理しますか?私が持っている
いくつかのアイデアがあります:
10分以上の期間の後、セッションデータはの再読み込みを取得します。ユーザーが非常にアクティブな場合、10分後に機能が開始されるか、ユーザーが離脱して戻って機能をトリガーすると2時間後になる可能性があります。セッション中にできる限り少ない情報として
ストアとすべてのページの呼び出しにDBからの残りをロードします。
使用したデータベースセッションを(私は本当に。このアイデアを好きではない)と、すべてのコンピュータ上で同じセッションを使用します。私はこれが好きですが、検索基準のようなものがセッションに格納されているときに混乱しているのがわかりました。同じ基準が両方のブラウザ/コンピータに表示されます。
ユーザーの名前やユーザー名/電子メールアドレスなどの情報については、セッションに格納してください。ただし、サイトの能力に大きく影響する情報については、セッションに保存して読み込まないでください必要に応じて(インスタンスごとに1回だけ実行しようとします)。
もっと良い方法がありますか?
- 別のオプション:5.データベースセッションを使用し、更新が行われたときにユーザーの他のセッションを読み込み(シリアル化を解除するだけ)、関連情報を変更してデータベースに戻します。
私は3があなたの問題を解決するとは思わない - それぞれのクライアントコンピュータはまだ異なるセッションIDを持っているので、依然として別々のセッションがある。ファイルベースのセッションとは異なる動作をするべきではありません。 –