web-dev-qa-db-ja.com

ASP.Net MVC3アプリケーション内で複数のメンバーシッププロバイダーを使用する

一部の設定とコンテンツを管理するための管理領域として、既存のmvc3かみそりアプリに新しい領域を追加しています。サイトの残りの部分は現在、クライアントを認証するカスタムプロバイダーによって保護されています。次に、管理領域にアクセスするために一部の従業員を認証する必要があります。クライアントユーザーデータは、従業員に必要なものとはまったく異なるデータベースと形式になっています。

これは多くの頭痛の種なしで可能ですか?

40
JBeckton

実際、頭痛はほとんどありません。

Web.configに必要なすべてのMembershipProviderを追加するだけです。

<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>

ご覧のとおり、2つのプロバイダーを追加しました。デフォルトのプロバイダーも指定しました。

次に、次のように2つを切り替えることができます。

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

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

あなたはおそらくそれをアプリケーションサービスか何かにラップしたいと思うでしょう、しかしあなたはその考えを理解します。それほど頭痛はしませんよね?

60
Mikael Östberg