カスタムActionFilterAttributeのOnActionExecutingメソッド中に、いくつかのアクションを実行する前に、ユーザーがまだログインしていることを確認します。これを行うには、次の擬似コードと同様のことを行います。
public override void OnActionExecuting( ActionExecutingContext filterContext )
{
if ( filterContext.HttpContext.User.Identity.IsAuthenticated )
{
// Do something...
}
}
同じドメインで実行される複数のクライアント用に複数のサイトがありますが、違いは仮想ディレクトリ名だけです。各仮想ディレクトリは実際には同じフォルダ/コードベースを指し、URL / virdir名は、ネストされた/Clientsディレクトリから使用する「クライアント構成ファイル」をコードに示します。サイト/コード/IIS構成の詳細が必要かどうかはわかりませんが、問題の原因となった場合に備えて提供してください。
ブラウザの複数のインスタンスを使用して複数のサイトにサインオンしようとすると、すべてが正常に機能します。サイト内を移動しようとすると、IsAuthenticatedチェックがtrueを返します。
ただし、複数のタブを備えた単一のブラウザを使用して複数のサイトにサインオンしようとすると、ログアウトし続けます。サイトAにサインインすると、ナビゲートできますが、サイトBにサインインするとすぐに、サイトAのどこかにナビゲートしようとすると、IsAuthenticatedはfalseを返します。
これは予想される動作ですか?これに対する回避策はありますか?
更新:IEでのみこの動作を再現できるようになりました。FirefoxとChromeでは、同じブラウザ/マルチタブまたはマルチブラウザのどちらを使用していても、ログイン画面が表示されます。IEがCookieを処理する方法に違いはありますか?それとも、クッキーが原因ではありませんか?