Wie kann ich eine .net (C #) - basierte authentifizierte Sitzung zwischen Webformularen und MVC2-Anwendungen teilen?

8

Wir haben eine kleine Anwendung, die wir in unserer Freizeit mit den neuesten verfügbaren mvc3- und Entity Framework .net-Bibliotheken erstellt haben, und haben sie implementiert. Das Management hat es gemocht, und sie wollen, dass es in eine schwere .net 3.5 Netzformularanwendung integriert wird.

Ich muss irgendwie die gleichen Authentifizierungssitzungen für die beiden Anwendungen verwenden. Ich verwende die gleiche Datenbank und Anwendung für die Authentifizierung mit den .net Mitgliedschaft und Profil-Providern. Dies funktioniert einwandfrei, aber Benutzer müssen sich separat in der MVC-App anmelden, auch wenn sie bereits für die Hauptanwendung angemeldet sind. Ich bin offen für alle Vorschläge: Aktivieren der Statussitzung auf einer anderen Ebene oder freigegebene Cookies , usw.

Was ist der beste Weg, um diese Anmeldeanforderung zu umgehen und ob ich die mvc-Anwendung in die Webformulare integrieren oder als eigenständige Anwendung beibehalten soll? Mein Hauptanliegen bei der Entscheidung wäre die Zeit für die vollständige Integration und spätere Wartung der Anwendungen.

    
Priyeshj 01.03.2011, 23:11
quelle

4 Antworten

7

Erstens ist die Tatsache, dass eine Anwendung ASP.NET MVC ist, hier keinen Unterschied:)

Zweitens, hier ist ein Beispiel, was Sie von MSDN aus machen können:

Ссылка

Kleiner Ausschnitt von dieser Seite:

%Vor%

.

P.S.

StrillingWarrior's Ratschlag der Zusammenführung beider Anwendungen, obwohl nicht wirklich erforderlich, kann aber für zukünftige Integrationen sehr nützlich sein. Sie können es später trotzdem tun.

    
Meligy 01.03.2011, 23:17
quelle
2

Die Formularauthentifizierung verwendet Cookies zum Verfolgen von Benutzern. Cookies können nur zwischen derselben Domain geteilt werden. Wenn Sie beispielsweise app1.foo.com und app2.foo.com konfiguriert haben, konfigurieren Sie diese beiden Anwendungen einfach so, dass sie dasselbe Domain-Cookie teilen. Zum Beispiel sollte web.config dieselbe Formularauthentifizierungskonfiguration verwenden:

%Vor%

Sie müssen außerdem sicherstellen, dass beide Anwendungen die gleichen Computerschlüssel teilen, da ein Authentifizierungscookie ausgegeben wird by app1 muss mit den gleichen Schlüsseln von app2 entschlüsselt werden.

    
Darin Dimitrov 01.03.2011 23:16
quelle
0

Vielleicht möchten Sie diese Anwendung einfach direkt in Ihre Web Forms-Anwendung integrieren. Die beiden können in der gleichen Anwendung koexistieren.

    
StriplingWarrior 01.03.2011 23:14
quelle
0

Speichern Sie den Sitzungsstatus in einer Datenbank. Speichern Sie den Sitzungsschlüssel in den Cookies jeder Sitzung. Rufen Sie beim AcquireSessionState-Ereignis im Lebenszyklus beider Anwendungen die Sitzungs-ID aus dem Cookie ab, laden Sie die Sitzungsdaten aus der Datenbank und aktualisieren Sie Ihre HttpContext.User . Sie haben dann die gleichen Authentifizierungsdaten in beiden Anwendungen.

    
smartcaveman 01.03.2011 23:18
quelle