C# 大多数人使用.NET';SqlMembershipProvider、SqlRoleProvider和SqlProfileProvider?

C# 大多数人使用.NET';SqlMembershipProvider、SqlRoleProvider和SqlProfileProvider?,c#,asp.net,sqlmembershipprovider,sqlroleprovider,sqlprofileprovider,C#,Asp.net,Sqlmembershipprovider,Sqlroleprovider,Sqlprofileprovider,大多数人在开发具有成员资格功能的站点时是否使用.NET的SqlMembershipProvider、SqlRoleProvider和SqlProfileProvider 还是许多人都有自己的供应商,甚至完全有自己的会员制度 SQL提供程序有哪些限制使您可以自己使用 扩展SQL提供程序以提供附加功能是否容易 供参考 ,以便您可以自定义它,而不是从头开始。仅供参考。我通常使用现成的提供程序,我的主要问题是跨用户跨配置文件属性查询。例如,查找具有名为Car的profile属性且等于true的所有用户。

大多数人在开发具有成员资格功能的站点时是否使用.NET的SqlMembershipProvider、SqlRoleProvider和SqlProfileProvider

还是许多人都有自己的供应商,甚至完全有自己的会员制度

SQL提供程序有哪些限制使您可以自己使用

扩展SQL提供程序以提供附加功能是否容易

供参考

,以便您可以自定义它,而不是从头开始。仅供参考。

我通常使用现成的提供程序,我的主要问题是跨用户跨配置文件属性查询。例如,查找具有名为Car的profile属性且等于true的所有用户。这取决于它们在底层结构中的存储方式

从理论上讲,它们听起来不错,但如果您在不创建大量抽象包装的情况下进行任何单元测试,它们就不太可能了。

如果您只需要基本的用户支持(角色、配置文件等),那么默认的提供程序将非常有效

如果您需要更多定制支持(默认提供程序[如Oracle]不支持数据库中的数据存储、已存在的数据库上的提供程序、高度定制的模式),那么您应该使用自己的提供程序


对我来说,我当前的站点只需要基本角色支持(以及最低限度的配置文件支持),所以我选择了默认的提供者。

我已经使用派生的
MembershipUser
类型推出了我自己的
MembershipProvider
类来包装自定义用户模式,因此,配置文件样式属性现在可以通过cast作为派生用户的一部分在任何地方使用。

我以前使用过SqlMembership,它非常好,除非您需要自定义。我记得我需要像名字和姓氏信息这样的信息,我意识到没有字段。最后,我没有扩展,而是使用了提供者的注释字段,并在其中添加了名称信息。这可能是一种不好的做法/懒惰/黑客方式,但在紧张的情况下对我有效。

除了配置文件提供程序,我们使用一切。配置文件提供程序完全基于文本,并进行全文搜索-随着用户群的扩大,这将变得非常缓慢。我们发现它是一个更好的解决方案,可以在会员api数据库中设置“我们自己的角色”配置文件部分,该部分被设置为会员身份中的用户ID。

我使用了自定义类和内置类。当您需要访问不同的数据库或模式,或者需要有额外的信息时


我将这些层抽象出来,这样它就可以在逻辑层上工作,并且有一个使用data.common.dbprovider位的DAL层,这样它就相当通用了。

Dude!将源添加到内置提供程序。令人惊叹的!明天我就要上班了:-)哈哈,是的。当我找到它的时候,我也很兴奋。我能够使这个疯狂的系统基于当前子域动态设置主连接字符串。通常,您需要一个默认的连接字符串。根据Scott Gu博客中的链接,我找到了一些提供商示例。table provider示例允许您将属性映射到配置文件中的列,这使得编写配置文件查询变得更加容易。我们也需要这样做-我们创建了自己的客户机表,其中包含我们需要的所有额外信息(键入到aspnet_成员资格表userid)然后创建了一个自定义注册类来更新api和自定义选项卡。非常好。或者您可以使用SqlProfileProvider使用属性!这就是它的目的!但正如吉姆·埃文斯所提到的,它似乎存在一些问题。