Использование нескольких провайдеров членства в приложении ASP.Net MVC 3 - PullRequest
40 голосов
/ 17 марта 2011

Я добавляю новую область в существующее бритвенное приложение mvc 3 в качестве области администратора для управления некоторыми настройками и контентом. Остальная часть сайта в настоящее время защищена специальным провайдером, который аутентифицирует наших клиентов. Теперь мне нужно аутентифицировать некоторых сотрудников для доступа к административной области. Пользовательские данные клиента находятся в совершенно другой базе данных и формате, чем то, что мне нужно для наших сотрудников.

Возможно ли это без особых головных болей?

1 Ответ

60 голосов
/ 18 марта 2011

Головная боль на самом деле очень слабая.

Просто добавьте все необходимые элементы MembershipProviders в 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>

Как видите, я добавил двух провайдеров. Я также указал поставщика по умолчанию.

Затем я могу переключаться между ними следующим образом:

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

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

Возможно, вы хотите обернуть это в службу приложений или что-то еще, но вы поняли идею. Не так много головной боли, верно?

...