フォーム認証を使用する ASP.Net 3.0 SP1 アプリがあります。
テスト中に、別のユーザーが表示しているページを表示すると、他のユーザーの名前がマスター ページのコントロールに表示されることに気付きました。Context.User.Identity も他のユーザー用です。
他の誰も表示していない別のページに切り替えると、 Context.User.Identity は正しいです。
私は困惑し、提案をいただければ幸いです。
前もって感謝します。
クリス
フォーム認証を使用する ASP.Net 3.0 SP1 アプリがあります。
テスト中に、別のユーザーが表示しているページを表示すると、他のユーザーの名前がマスター ページのコントロールに表示されることに気付きました。Context.User.Identity も他のユーザー用です。
他の誰も表示していない別のページに切り替えると、 Context.User.Identity は正しいです。
私は困惑し、提案をいただければ幸いです。
前もって感謝します。
クリス
ページの出力キャッシュが有効になっていることが原因である可能性があります。ページがVaryByParam=noneでサーバー側にキャッシュされている場合、すべてのユーザーがキャッシュから同じコピーを取得します。
私はこれを引き起こす可能性のある2つのことしか考えられません:
ユーザー固有のデータをリクエスト間で共有される場所に保存しています(たとえば、static(C#)/ shared(VB)変数、ASP.NETキャッシュ、アプリケーションオブジェクトなど)
出力キャッシュが有効になっています。
以下を確認してください。
aspxおよびascxファイルのOutputCacheディレクティブ、
web.configファイルのsystem.web/caching要素、
HttpCacheability.SetCacheabilityメソッドの呼び出し。
問題が見つからない場合:
望ましくない動作を再現する最も単純なバージョンが得られるまで、アプリケーションの単純化されたバージョンを作成してみてください。
この単純化のプロセスの間に、あなたはおそらくあなた自身のために問題を発見するでしょう。そうでない場合は、簡略化されたバージョンからいくつかのコードを投稿してください。
Cookieなしのブラウザを使用する場合は、認証チケットに付属のリンクを使用していないことを確認してください。
また、リクエスト間でデータを共有している可能性のある他のすべてを確認してください。DOKが言ったように、しかし、アプリケーションがそれを行うことができる唯一の方法ではないことを覚えておいてください。
targetframe ="_self"またはTarget="_self"を設定したために問題が発生したようです。これらをすべて削除しましたが、すべて正常に機能しているようです。
もう1つの注意:ページを更新すると、正しいユーザーのページも表示されます。