5

Ich hatte eine Anwendung, die auf 1 einzelne Datenbank süchtig.Asp.NET überschreiben Mitgliedschaft Einstellungen zur Laufzeit (asp.net mvc)

Die App muss sich jetzt in mehrere Datenbanken einklinken. Was wir tun möchten, ist, mit der gleichen Anwendung/Domain/Hostname/virtuelles Verzeichnis geben Sie dem Benutzer die Option auf dem Anmeldebildschirm, um die "App/Datenbank" zu wählen, die sie verbinden möchten.

Jede Datenbank hat die App tables/data/procs/etc sowie die aspnet Mitgliedschaft/Rollen Zeug.

Wenn der Benutzer den Benutzernamen/das Passwort eingibt und die Anwendung auswählt (Liste auswählen), möchte ich den Benutzer anhand der ausgewählten Anwendungsdatenbank validieren.

Gegenwärtig wird die Datenbankverbindungszeichenfolge für Mitgliedschaftsdienste in der Datei web.config gespeichert. Gibt es eine Möglichkeit, dies bei der Anmeldung zu überschreiben? Auch ich brauche die Funktion "Erinnere mich", um reibungslos zu arbeiten. Wie funktioniert das, wenn der Benutzer in 5 Stunden zur App zurückkehrt ... Dieser Prozess sollte in der Lage sein, den Benutzer und die Anwendung zu identifizieren und sich entsprechend einzuloggen.

Antwort

5

Der einzig mögliche Weg ist, den Conn-String über Reflexion zu ändern:

// Set private property of Membership provider.FieldInfo connectionStringField 
= GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic); 
     connectionStringField.SetValue(this, connectionString); 

hier gefunden: http://forums.asp.net/p/997608/2209437.aspx

Warum Ihre eigenen MembershipProvider nicht nur implementieren? Sehr einfach zu tun und dann haben Sie die volle Kontrolle darüber, was passiert. Ich bin sicher, dass Sie ein anderes benutzerdefiniertes Szenario finden, mit dem der Standardanbieter nicht gut funktioniert.

AFAIK die Erinnerung Funktion sollte genau so funktionieren, wie Sie beschreiben, solange der Benutzer ihre Cookies nicht löscht.