私はStruts2プロジェクトを開発しています。そのプロジェクトでは、ユーザーはログインして、うまく機能することを行うことができます。そのユーザーが新しいタブを開いてプロジェクトの URL を入力すると、同じページが表示されます (ログイン ページの後)。上記のシナリオをどのように実装しますか?
1 に答える
1つの方法は、ここで説明したように、質問とほぼ同じです(概念は同じですが、.NETでの実装のみが異なります)。
アクションを渡すたびに一意の値を計算し、それをセッション変数 (つまりサーバー側) に入れ、それを使用して Web ページ (つまりクライアント側) の非表示フィールドにフィードします。
ページが非表示フィールドを含むフォームをポストバック (送信) すると、ページ フィールドとセッション フィールドが同じかどうかがわかります。
はいの場合: (唯一の OR) 最後に開いたページ/タブです。
「いいえ」の場合: 最後に開いたページではないページからフォームを送信しようとしています。
このようにして、Web アプリケーションのインスタンスは常に 1 つだけになり、Web アプリケーションの別のインスタンスを新しいページ/タブで開くと、前のインスタンスが無効になります。最後に開いたインスタンスのみが有効になります (複数であるため)。隠しフィールド、各ページに 1 つ、ただしセッション変数は 1 つだけ)。
Webアプリの単一のインスタンスを確保するのではなく、ユーザーが新しいタブを開くのを防ぐことが本当に必要な場合(そうですか?)、この原則から作業を開始し、最終的にここに戻ってきます(いくつかのコードを使用することをお勧めします)