2011-03-17 3 views
39

J'ajoute une nouvelle zone à une application de rasoir mvc 3 existante en tant que zone d'administration pour gérer certains paramètres et contenus. Le reste du site est actuellement sécurisé par un fournisseur personnalisé qui authentifie nos clients. Maintenant, j'ai besoin d'authentifier certains employés pour accéder à la zone d'administration, Les données de l'utilisateur client est dans une base de données et un format totalement différent de ce dont j'ai besoin pour nos employés.Utilisation de plusieurs fournisseurs d'appartenances dans l'application ASP.Net MVC 3

Est-ce possible sans beaucoup de maux de tête?

Répondre

58

Il y a en fait très peu de maux de tête.

Ajoutez simplement tous les MembershipProviders que vous voulez dans web.config:

<membership defaultProvider="MembershipProvider1"> 
    <providers> 
    <clear/> 
    <add name="MembershipProvider1" type="MvcApplication.MembershipProvider1" /> 
    <add name="MembershipProvider2" type="MvcApplication.MembershipProvider2" /> 
    <add name="AspNetSqlMembershipProvider" 
     type="System.Web.Security.SqlMembershipProvider"  
     connectionStringName="ApplicationServices" /> 
    </providers> 
</membership> 

Comme vous pouvez le voir, je l'ai ajouté deux fournisseurs. J'ai également spécifié un fournisseur par défaut.

Je peux ensuite basculer entre les deux comme ceci:

var membershipProvider1 = Membership.Providers["MembershipProvider1"]; 
membershipProvider1.ValidateUser("Mike", "banana"); 

var membershipProvider2 = Membership.Providers["MembershipProvider2"]; 
membershipProvider2.ValidateUser("Mike", "orange"); 

Vous voulez probablement conclure que dans un service d'application ou quelque chose, mais vous voyez l'idée. Pas tellement de maux de tête, non?

+0

non, beaucoup plus facile que je pensais ... merci – JBeckton

+3

Bonne question, bonne réponse. Merci les gars :) – Marchy

+3

Commentaire @Marchy: D –