2008-11-19 6 views
6

ich zwei ASP.Net-Anwendungen haben in zwei verschiedenen Ordnern auf dem Server befindet:Separate Anwendungen denselben ASP.Net Session-Cookie Teilen

  • /Foo < - das ist die Standard unsecure Anwendung
  • /Secure < - das ist eine separate Anwendung, die SSL von IIS erfordert

das Problem, dass standardmäßig ist, die ASP.NET_SessionId Cookie auf der Domäne angegeben werden und gemeinsam genutzt werden zwischen den beiden Anwendungen in verschiedenen Verzeichnissen. Ich brauche den Session-Cookie, um anders zu sein, weil ich nicht zulassen kann, dass ein entführter Cookie auf /Foo verwendet wird, um Zugriff auf die /Secure-Anwendung zu gewähren.

Idealerweise möchte ich, dass der Cookie jeder Anwendung durch die Cookie-Eigenschaft Path begrenzt wird. Es gibt anscheinend keine Möglichkeit, dies in .Net out of the box zu tun.

Als zusätzlichen Kopfschmerz, auch wenn ich benutzerdefinierten Code schreibe, um den Cookie-Pfad zu setzen, habe ich Angst, dass einige Browser Groß-und Kleinschreibung beachten und nicht für /Foo und /foo, die je nachdem, wie verwenden Wenn die Links erstellt werden, können mehrere Sitzungen in derselben Anwendung ausgeführt werden.

Hat jemand dieses Problem angetroffen und überwunden?

Antwort

9

In .Net 2.0 und höher können Sie das Attribut "cookieName" des XML-Elements "sessionState" in Ihrer Datei web.config auf unterschiedliche Werte für jede Ihrer Anwendungen setzen. Das verhindert, dass sie dieselbe Sitzungs-ID verwenden.

Here's the MSDN reference for this.

+0

neue Verbindung http://msdn.microsoft.com/en- us/library/h6bb9cz9 (v = vs.80) .aspx – Palani

0

Klingt wie sie sind nur in separaten virtuellen Verzeichnissen, sind aber immer noch im selben Application Pool. Wenn Sie wirklich möchten, dass die Anwendungen getrennt sind, erstellen Sie einen anderen Anwendungspool für Ihre/secure App.

0

Überprüfen Sie das Symbol für Ihren Ordner /Secure in IIS.

Wenn es ein Cog-Symbol hat, dann ist es eine separate Anwendung und die Sitzungen sollten anders sein und die App wird in einer eigenen App-Domäne laufen.

Wenn es sich um ein Globussymbol handelt, handelt es sich um ein virtuelles Verzeichnis, das dieselbe Sitzung wie die Stammwebsite und /Foo verwendet.

1

, wenn Sie die Formularauthentifizierung verwenden, dann müssen Sie auch die Formulare Cookie in web.config ändern:

<forms name="Foo"... 
<forms name="Secure"...