ログインした後、基本的に 1 つのページに座って、AJAX 要求につながるいくつかのことを行う Web ページがあります。
AJAX リクエストは通常の HTTP リクエストと変わらないため、必要に応じて、サーバーに到達するとセッションの有効期限が延長されます。
ユーザーのセッションは、サーバーとやり取りする場合にのみ拡張する必要があるため、これには問題はありません。これは理にかなっています。
ユーザーは基本的にこの 1 つのページにとどまるため、このタイムアウトが発生した後に何らかのアクションでサーバーにアクセスしようとしたときに難しい方法を見つけるのではなく、セッションの有効期限が切れたときに通知できるようにしたいと考えています。
alert
そのため、銀行の Web サイトでよく見られる、ユーザーのセッションが切れる直前にポップアップ ( ) が表示されるようなものを実装するように依頼されました。直前に表示する必要はありませんが、「すぐに」有効期限が切れる (または有効期限が切れた後、できる限り近いタイミングで) ため、ユーザーはページで何もできず、誤ってページにリダイレクトされます。ログインページ。
私の最初のアイデアは、サーバーをポーリングして 30 秒ごとに確認することでした。これに関する問題は、AJAX 要求がセッションの有効期限 (30 分) をリセットし、このポーリングを使用するポイントを無効にすることです。
もちろん、1 つの「解決策」は Javascript でこれを処理することです。通常のアクションの AJAX リクエストを受信したときに、タイマーをリセットします。このタイマーは、設定してから 30 分後に実行されます。また、jQuery のグローバル AJAX ハンドラーにアタッチして、AJAX 呼び出しが成功するたびにタイマーをリセットできるため、これはそれほど難しくないことはわかっていますが、セッションのタイミングを追跡するのは適切ではないようです。二か所出ます。リソースを「浪費」して、かなり頻繁に AJAX 呼び出しを行いたいと考えています。セッションの有効期限が切れたときにユーザーが何かをする必要がないようにしたいだけです。コンピューターを31分間離れた場合、戻ってきたときにセッションの有効期限が切れたことを知らせるメッセージが表示されるようにしたいのです。リダイレクトされます。
私が調べた多くの記事/説明から、私の状況に当てはまるものは本当に見つかりません. Spring Security を使用するものを見てきましたが、残念ながら、通常のユーザー名/パスワード スキームを使用しておらず、機能するようにカスタマイズする方法を理解できなかったため、使用していません。
「フィルター」または「インターセプト」という用語が飛び交っているのを見たことがありますが、それらを使用できるかどうかはわかりません。セキュリティの問題のように思われるからです。
基本的に、セッションの有効期限が切れたときに、有効期限をリセットせずにHTTPリクエストをチェックできる方法を探しています。私は基本的に、それに基づいて何らかの形の真/偽で応答する必要があるだけです(これは私が理解できます)。
サーバー上でこの処理を維持し、セッションがタイムアウトになったときにポーリングをキャッチできるようにしたいので、HTTP 要求はセッションの現在の状態を確認して分析できるようにする必要がありますが、タイムアウトをリセットすることはできません。
それが役立つ場合、私のセッションは次のように宣言されています。
@Component
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class UserDataSession {
そして、私のコントローラーは次のように使用します:
@Autowired
private UserDataSession userDataSession;
リクエストのマッピングでセッションの有効期限のリセットをバイパスする方法はありますか?