在ASP.Net MVC 3应用程序中使用多个成员资格提供程序

JBe*_*ton 40 asp.net-mvc asp.net-membership

我正在为现有的mvc 3剃须刀应用添加一个新区域作为管理区域来管理一些设置和内容.该网站的其余部分目前由一个自定义提供程序保护,该提供程序对我们的客户端进 现在我需要对一些员工进行身份验证以访问管理区域.客户端用户数据与我们员工所需的数据库和格式完全不同.

这可能没有太多麻烦吗?

Mik*_*erg 60

实际上很少有头痛.

只需在web.config中添加所需的所有MembershipProviders:

<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>
Run Code Online (Sandbox Code Playgroud)

如您所见,我添加了两个提供程序.我还指定了一个默认提供程序.

然后我可以像这样在两者之间切换:

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

var membershipProvider2 = Membership.Providers["MembershipProvider2"];
membershipProvider2.ValidateUser("Mike", "orange");
Run Code Online (Sandbox Code Playgroud)

您可能希望将其包装到应用程序服务或其他内容中,但您会明白这一点.没那么头痛,对吧?

  • 好问题,很棒的答案.多谢你们 :) (3认同)
  • @Marchy好评:D (3认同)
  • 有没有办法设置WebSecurity类使用的提供程序? (2认同)