首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQL成员资格提供程序和ASP.NET配置文件提供程序

SQL成员资格提供程序和ASP.NET配置文件提供程序
EN

Stack Overflow用户
提问于 2009-05-21 20:36:52
回答 4查看 19.7K关注 0票数 17

我目前正在为我正在做的一个新项目设计一个会员/个人资料方案,我希望从其他人那里获得一些意见。

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

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

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

我想知道这是不是一个可能的解决方案,如果是这样的话,有没有人幸运地使用了这种方法。

如有任何意见,我们将不胜感激。

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-05-21 21:15:21

首先,我自己从来没有做过这件事。

有一个非常优秀的系列(14 !!)部分)由4 Guys from Rolla的Scott Mitchell关于ASP.NET 2.0成员资格、角色和配置文件提供者系统的整个主题。

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

代码语言:javascript
复制
  <!-- 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>

我认为这应该是可行的:-)

票数 16
EN

Stack Overflow用户

发布于 2011-03-26 01:41:09

除此之外,正如Marc回答的那样:

代码语言:javascript
复制
<add name="AspNetActiveDirectoryMembershipProvider"
           type="System.Web.Security.ActiveDirectoryMembershipProvider, 
                 System.Web, Version=2.0.3600, Culture=neutral, 
                 PublicKeyToken=b03f5f7f11d50a3a" />

您可能还需要添加

代码语言:javascript
复制
connectionStringName="ADService",
attributeMapUsername="sAMAccountName"

使用对应的连接字符串

代码语言:javascript
复制
<connectionStrings>
    <add name="ADService" connectionString="LDAP://ServerIP" />
</connectionStrings>

如果您使用的是.net 4.0,则需要替换

代码语言:javascript
复制
Version=2.0.3600 

使用

代码语言:javascript
复制
Version=4.0.0.0

所以最后,

代码语言:javascript
复制
<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>

由于它被设置为默认值,因此可以被引用为:

代码语言:javascript
复制
MembershipProvider provider = Membership.Provider; 
票数 3
EN

Stack Overflow用户

发布于 2011-04-25 23:18:33

谢谢你的信息,这对我很有帮助。此外,您可以在membership标记中设置默认提供程序,而不是使用MembershipProvider provider = Membership.Provider;设置它。

<membership defaultProvider="AspNetActiveDirectoryMembershipProvider">

我还写了一个小的how to,并下载到一个配置为使用AspNetActiveDirectoryMembershipProvider的Visual Studio项目和源代码。

ASP.NET Forms Based Authentication - using AspNetActiveDirectoryMembershipProvider

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/895002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档