7

ログインすると ASPXAUTH Cookie が生成される SimpleMembership を使用して ASP.NET MVC4 プロジェクトに取り組んでいます。の。

これは非常に奇妙でした。なぜなら、新しいプロジェクトには文字通り、データベースにユーザーが定義されていないからです。さらに戸惑うのは、新しいプロジェクトで「ログアウト」をクリックすると、元のサイトからログアウトされてしまうことです。

どちらのサイトも異なるポートで実行されていますが、どちらも localhost で実行されています。Request を調べて "IsAuthenticated == true" が返される理由を確認したところ、ASPXAUTH Cookie が両方のサイトに送信されており、デバッガーの Cookie の "domain" パラメーターが "null" になっていることに気付きました。これにより、おそらくCookieが「ドメインなし」のCookieとして生成されているのではないかと考えました(正直に言うと、そのようなことが可能かどうかはわかりません!)、ドメインを指定するためにweb.config設定を調べました:

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" domain="http://localhost:56626" />
</authentication>

残念ながら、「ドメイン」パラメーターを設定すると、Cookie が機能しなくなりました。すべての順列(httpあり、httpなし、ポートあり、ポートなしなど)を試しましたが、ドメインを指定するたびに、ブラウザは適切に指定されたドメイン名でCookieを受け取ります(Chrome開発者ツールで調べました)、しかし、それを後続のリクエストのサーバーに送り返すことはありません。

だから、私はここで何が起こっているのかについてかなり混乱しています。これは、どこかで何かを適切に設定しなかったために発生したセキュリティ リークですか? それとも、同じドメインの 2 つの異なるポートにある 2 つのまったく異なる Web アプリで ASPXAUTH Cookie がユーザーを承認するのは、まったく正常な動作ですか? これを Web ホストでテストしますが、残念ながら、現時点では MVC4 を実行するものにはアクセスできません。

前もって感謝します。

4

2 に答える 2

5

ASPXAUTH は、Cookie に付けられる既定の名前ですが、Web.Config 内の各プロジェクトのこの名前を変更することで、そのプロジェクトにのみ適用されるようにすることができます。

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" domain="http://localhost:56626"  name=".PROJ1AUTH"/>
</authentication>
于 2013-01-22T14:03:44.157 に答える
3

フォーム要素にName属性を追加します。他のプロジェクト間で一意になるように、指定した名前に基づいて authcookie に名前を付けます。

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login" timeout="2880" name="A_UNIQUE_NAME" />
</authentication>
于 2013-02-06T19:59:13.300 に答える