7

Ich arbeite an einem ASP.NET MVC4-Projekt mit SimpleMembership, die einen ASPXAUTH-Cookie generiert, wenn Sie angemeldet sind. Es scheint gut zu funktionieren, aber heute habe ich geöffnet ein anderes MVC4-Projekt, nur um festzustellen, dass ich bereits angemeldet war.Simplemembership ASPXAUTH-Cookie, der auf zwei verschiedenen Webprojekten validiert

Das war extrem merkwürdig, weil das neue Projekt buchstäblich keine Benutzer in der Datenbank definiert hat. Noch irritierender ist es, wenn ich beim neuen Projekt "abmelden" klicke und mich von der ursprünglichen Seite abmeldet.

Beide Seiten laufen auf verschiedenen Ports, obwohl beide auf localhost. Beim Überprüfen des Requests, um zu sehen, warum "IsAuthenticated == true" zurückgegeben wird, habe ich festgestellt, dass der ASPXAUTH-Cookie an beide Sites gesendet wird und der Parameter "domain" des Cookies im Debugger "null" ist. Das brachte mich dazu zu denken, dass der Cookie möglicherweise als "domänenloser" Cookie generiert wird (ich habe keine Ahnung, ob so etwas überhaupt möglich ist, um ehrlich zu sein!) Und schaute in der Einstellung web.config nach einer Domäne :

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

Leider ist die „Domäne“ Parametereinstellung das Cookie aufhören Arbeits gemacht hat. Ich habe alle Permutationen ausprobiert (mit http, ohne http, mit Port, ohne Port usw.) und jedes Mal, wenn ich eine Domain anmelde, erhält der Browser das Cookie mit dem richtig angegebenen Domainnamen (ich habe es in den Chrome-Entwicklertools untersucht), aber dann scheitert es, es jemals an den Server von nachfolgenden Anfragen zurückzusenden.

Also, ich bin ziemlich verwirrt darüber, was hier passiert. Ist das ein Sicherheitsleck, das ich dadurch verursacht habe, dass ich irgendwo nichts richtig eingerichtet habe? Oder ist es völlig normal, dass ein ASPXAUTH-Cookie einem Benutzer zwei völlig unterschiedliche Web-Apps an zwei verschiedenen Ports in der gleichen Domain zur Verfügung stellt? Ich würde das auf einem Webhost testen, aber leider habe ich keinen Zugriff auf MVC4.

Vielen Dank im Voraus.

+0

prüfen http://stackoverflow.com/questions/1612177/are-http-cookies-port-specific – Chandermani

Antwort

5

ASPXAUTH ist der Standardname für das Cookie, aber durch Ändern dieses Namens für jedes Projekt in der Web.Config können Sie festlegen, dass es nur für dieses Projekt gilt.

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

ein Namen Attribut auf das Formularelement hinzufügen. Es wird den Authcookie nach dem von Ihnen angegebenen Namen benennen, wodurch er zwischen anderen Projekten einzigartig wird.

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880" name="A_UNIQUE_NAME" /> 
</authentication> 
+0

Works! Nützlich, wenn Sie 2 geöffnete Projekte gleichzeitig haben. – cryss

Verwandte Themen