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.
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.
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:
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.
Vielleicht möchten Sie diese Anwendung einfach direkt in Ihre Web Forms-Anwendung integrieren. Die beiden können in der gleichen Anwendung koexistieren.
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.
Tags und Links asp.net-mvc session authentication c#-4.0