私は多数のユーザー向けに何かを開発していますが、それをテストしていたとき、NAT ユーザーは 1 つのセッションしかなかったため、情報をマージしていました。適切な情報を適切なユーザーに表示するには、どうすれば分割できますか?
Java、JSF 1.2、および SpringSecurity を使用しています。
アップデート:
または、少なくとも、何かを開発して分割し、1 人のユーザーが自分の情報にのみアクセスできるようにするにはどうすればよいでしょうか?
私は多数のユーザー向けに何かを開発していますが、それをテストしていたとき、NAT ユーザーは 1 つのセッションしかなかったため、情報をマージしていました。適切な情報を適切なユーザーに表示するには、どうすれば分割できますか?
Java、JSF 1.2、および SpringSecurity を使用しています。
アップデート:
または、少なくとも、何かを開発して分割し、1 人のユーザーが自分の情報にのみアクセスできるようにするにはどうすればよいでしょうか?
セッションを IP で照合するのは、ばかげた (申し訳ありませんが) セッション処理かもしれません。すべての NAT ユーザーは同じ外部 IP を持っているため、マージされます。セッションを処理するために Cookie を使用することをお勧めします。
beliarius が言うように、おそらく既に Cookie を使用しているかもしれませんが、Cookie が IP から作成された場合、それらは非常に役に立ちません。
あなたが話しているアプリがブラウザベースでない場合は、クライアントに Cookie を送信し、自分で Cookie 処理を実装する必要があります。または、クライアントごとに 1 つの TCP 接続を使用し、再接続時に再ログインします。
これは、セッションが開始されるたびに正しく再生成されないセッション Cookie がある場合に発生することがあります。この仮説をテストするには、さまざまなクライアントで session_id を確認してください。
@Danielの回答に加えて、サブネットマスキングの誤った値で構成されたIPアドレスベースのアフィニティがあると思います。IP アドレス ベースのアフィニティが構成されている場合、マスクは 255.255.255.255 で、IP に基づいて接続を一意に識別する必要があります。これは、IP 仮想サーバーでもチェックする必要があります。