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

40

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

这是否可能不会带来太多麻烦?

1个回答

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>

如您所见,我已经添加了两个提供者。我还指定了一个默认的提供者。

我可以像这样在它们之间切换:

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

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

您可能希望将其封装到应用程序服务或其他东西中,但您已经明白了这个想法。没那么让人头疼,对吧?


2
有没有一种方法可以设置WebSecurity类使用的提供程序? - Rowan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接