3

異なるアプリケーション名で同じ 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 サイト名に入れなくても可能ですか?

4

1 に答える 1

3

各アプリケーションの web.config で、認証タグの Cookie 名に一意の名前を設定します。

 <authentication name="DashBoard" mode="Forms">
 <forms loginUrl="~/Account/LogOn" />
</authentication>
于 2012-04-10T02:18:22.670 に答える