私たちは、ユーザーが当サイトを離れてすぐに.Netセッションを終了したことを検出するようなシナリオを持っています。フォーム認証を使用しています。私たちは既に持っているセッションのタイムアウトについて話しているわけではありません。私たちは、ユーザーがいつリンクを介して、アドレスを入力するか、またはブックマークにしたがって、私たちのサイトからブラウズしたかを知りたいと思います。彼らが私たちのサイトに戻ってきたとしても、すぐにログインする必要があります(私はこれが使い勝手の良さではないことを理解しています - これは私たちがクライアントから与えたセキュリティ要件です)。ユーザーがサイトを離れるときにASP.Netセッションの有効期限を強制的に延期するにはどうすればよいですか?
私の最初の本能は、これが不可能であること、または解決策が非常に信頼できないことです。私たちが思いついた唯一の解決策は次のとおりです。
- ユーザーがサイトを離れるときにセッションをログアウトするようにサーバーに指示するonBlurイベントハンドラを追加します。
- ユーザーがログインしたら、HTTPリファラーをチェックして、ユーザーがサイト内をナビゲートしていることを確認します。
- AJAXポーリングをサーバーに追加して、セッションを10秒間隔でリフレッシュする可能性があります。コールが時間通りに受信されないと、セッションは終了します。
onBlurは、最も簡単な、しかしおそらく最も信頼性の低い方法のようです - 私はそれが動作するかどうかは分かりません。また、ユーザーがサイト内のアドレスを入力し、リンクをたどることができないため、リファラーメソッドにも問題があります。 AJAXメソッドはうまくいくと思われますが、複雑です。バックエンドでどのように処理するかはわかりません。私はそれがいつもうまくいかないシナリオもあるかもしれないと思っています。
すべてのアイデアをいただければ幸いです。ありがとう。
ASP.Netアプリでこれを行いましたか?ポーリングがコールされていないときのバックエンドでの認識はどうですか?言い換えれば、定義によって要求が行われない場合、どのようにこれに対してリスナーを設定しますか? – Raelshark
セッションIDを最後に受信したポーリング時間にマップしたオブジェクトがありました。ページ要求が行われたときはいつでも最後の最後のポーリング時間を取得しました。あまりにも古いかエントリがない場合は、我々はそれらを締結した。私たちは定期的に(数分ごとに)辞書の古いエントリをクリアしました。 – Keltex