ASP.NET Active Directory成员资格如何提供程序和SQL Profile Provider?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (30)

我目前正在为我正在开发的一个新项目设计一个会员资格/配置文件方案,我希望能够从其他方面获得一些意见。

该项目是一个ASP.NET Web应用程序,由于时间很短,我试图使用任何和所有内置的.NET框架组件。该网站可能会招待<5000个用户。每个用户都将拥有一个配置文件,其中自定义设置和对象将在访问之间持续存在。

我需要使用现有的Active Directory进行身份验证。由于AD模式无法扩展以容纳新字段,因此我需要将用户设置和对象保存在不同的数据存储中。我也被告知ADAM可能不是一个可能的解决方案。

我希望将Active Directory成员资格提供程序用于我的身份验证方案,并将SQL配置文件提供程序用作用户配置文件数据存储。我不想建立一个自定义配置文件提供程序,但是如果需要的话,我不认为这会带来很多问题。

我想知道这是否是一个可能的解决方案,如果是的话,有没有人有这种方法的运气。

提问于
用户回答回答于

首先 - 我从来没有做过这件事。

关于ASP.NET 2.0成员资格,角色和配置文件提供程序系统的一个非常出色的系列(14 !!部分),由Scott Mitchell在罗拉的4个人中完成

根据我的理解,应该能够通过使用web.config中的这两个部分来配置正在查找的这种行为:

  <!-- configure Active Directory membership provider -->
  <membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
    <providers>
      <add name="AspNetActiveDirectoryMembershipProvider"
           type="System.Web.Security.ActiveDirectoryMembershipProvider, 
                 System.Web, Version=2.0.3600, Culture=neutral, 
                 PublicKeyToken=b03f5f7f11d50a3a" />
    </providers>
  </membership>

  <!-- configure SQL-based profile provider -->      
  <profile defaultProvider="SqlProvider">
    <providers>
      <add name="SqlProvider"
        type="System.Web.Profile.SqlProfileProvider"
        connectionStringName="SqlProfileProviderConnection"
        applicationName="YourApplication" />
    </providers>

    <!-- specify any additional properties to store in the profile -->   
    <properties>
      <add name="ZipCode" />
      <add name="CityAndState" />
    </properties>
  </profile>
用户回答回答于

除此之外:

<add name="AspNetActiveDirectoryMembershipProvider"
           type="System.Web.Security.ActiveDirectoryMembershipProvider, 
                 System.Web, Version=2.0.3600, Culture=neutral, 
                 PublicKeyToken=b03f5f7f11d50a3a" />

可能还需要添加

connectionStringName="ADService",
attributeMapUsername="sAMAccountName"

与相应的连接字符串

<connectionStrings>
    <add name="ADService" connectionString="LDAP://ServerIP" />
</connectionStrings>

如果使用.net 4.0,则需要更换

Version=2.0.3600 

Version=4.0.0.0

最后,

<membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
      <providers>
        <add name="AspNetActiveDirectoryMembershipProvider"
             connectionStringName="ADService"
             type="System.Web.Security.ActiveDirectoryMembershipProvider, 
                 System.Web, Version=4.0.0.0, Culture=neutral, 
                 PublicKeyToken=b03f5f7f11d50a3a"
             attributeMapUsername="sAMAccountName"/>
      </providers>
    </membership>

并且因为它被设置为默认值,所以它可以被引用为:

MembershipProvider provider = Membership.Provider; 

扫码关注云+社区