5

J'ai eu une application qui a accroché sur 1 base de données unique.Remplacement d'Asp.net Paramètres d'appartenance à l'exécution (asp.net mvc)

L'application doit maintenant être connectée à plusieurs bases de données. Ce que nous voulons faire est, en utilisant la même application/domaine/nom d'hôte/répertoire virtuel donner à l'utilisateur l'option sur l'écran de connexion pour sélectionner le "App/Database" qu'ils veulent se connecter.

Chaque base de données possède les tables App/data/procs/etc ainsi que les éléments d'appartenance/rôle aspnet.

Lorsque l'utilisateur entre le nom d'utilisateur/mot de passe et sélectionne (sélectionnez la liste) l'application, je veux valider l'utilisateur par rapport à la base de données des applications sélectionnées.

Actuellement, la chaîne de connexion à la base de données pour les services d'appartenance est enregistrée dans le fichier web.config. Y a-t-il un moyen de contourner cela lors de la connexion? En outre, j'ai besoin de la fonction "Souvenez-vous de moi" pour travailler aussi bien. Comment cela fonctionne lorsque l'utilisateur revient à l'application dans 5 heures ... Ce processus devrait être en mesure d'identifier l'utilisateur et l'application et se connecter de manière appropriée.

Répondre

5

La seule façon est de changer la chaîne de conn par réflexion:

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

trouvés ici: http://forums.asp.net/p/997608/2209437.aspx

Pourquoi ne pas mettre en œuvre tout simplement votre propre MembershipProvider? Très facile à faire et ensuite vous avez un contrôle total de ce qui se passe. Je suis sûr que vous allez créer un autre scénario personnalisé avec lequel le fournisseur par défaut ne fonctionne pas bien. AFAIK la fonction remember me devrait fonctionner exactement comment vous décrivez tant que l'utilisateur ne supprime pas ses cookies.