異なるアプリケーション名で同じ IIS Web サイトに公開されているフォーム認証を使用する Asp.Net MVC アプリケーションがあります。
Default Web Site/Dashboard
Default Web Site/Partner
Chrome を使用して、Dashboard
インスタンスに移動してログインすると、すべて正常に動作しているように見えます。別のブラウザ ウィンドウを開いてPartner
インスタンスに移動すると、期待どおりにログインするように求められます。インスタンスにログインするPartner
と、すべてが正常に機能しているように見えます。 以前のブラウザ ウィンドウに戻り、インスタンスの認証済みリソースにアクセスしようとすると、Dashboard
何らかの理由でログアウトされたかのようにログイン ページにリダイレクトされて、問題が発生します。Dashboard
インスタンス に再度ログインすると、再び正常に動作します。しかし、私が行くとPartner
たとえば、そこでログアウトしていることに気づきました。他のアプリケーション インスタンスにログインする行為によって、何らかの形で前のインスタンスからログアウトされるようです。ゴーグリングを行ったところ、フォーム認証 Cookie の設定が原因で問題が発生しているようです。これが私が使っていたものです:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn"
timeout="1576800"/>
</authentication>
Cookie パスを明示的に指定しなかったため、Cookie パスがアプリケーション インスタンスによって共有されている可能性があるため、上書きされていました。そこで、Cookie パスを明示的に指定しようとしました。だから私が公開するときDashboard
、私はこれを使用しました:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn"
timeout="1576800"
cookieless="UseCookies"
path="/Dashboard" />
</authentication>
そしてPartner
、私はこれを使用しました:
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn"
timeout="1576800"
cookieless="UseCookies"
path="/Partner" />
</authentication>
しかし、これはまったく機能しませんでした。これらの設定では、適切にログインおよびログアウトすることさえできません。 私の目標は、フォーム認証のためにダッシュボードとパートナーのインスタンスを完全に独立させて、一方にログインしても他方に影響を与えないようにすることです。これは、それらを別の IIS Web サイト名に入れなくても可能ですか?