【问题标题】:SqlRoleProvider + Custom Membership ProviderSqlRoleProvider + 自定义成员资格提供程序
【发布时间】:2011-05-20 15:03:04
【问题描述】:

是否可以将内置的 SqlRoleProvider 与自定义成员资格提供程序一起使用?这将如何实现?

@mellamokb

合并它们的某些方面?否

同时使用它们?是的(因此“使用内置的 SqlRoleProvider 和自定义成员资格提供程序”是我问题的一部分)

从两者中读取角色?会员提供者与读取角色有什么关系?

同时对两者进行身份验证?角色提供者与身份验证有什么关系?

【问题讨论】:

  • 意义?合并它们的某些方面?同时使用它们?读取两者的角色?同时对他们两个进行身份验证?您需要清楚地描述您的意图以及您希望它如何工作。

标签: c# .net asp.net security


【解决方案1】:

会员提供者有什么 与阅读角色有关?

什么都没有。

角色提供者必须做什么 有认证吗?

什么都没有

是的,您当然可以将 SqlRoleProvider 与您的自定义 Membership Provider 一起使用。他们都是独立的。

内置的 SqlMembership 提供程序和 SqlRoleProvider 共享 aspnet_Users 和 aspnet_Application 表。使用 SqlRoleProvider,每当您将用户添加到角色时,如果用户存在,它将检查 aspnet_Users 表(它将检查用户名+应用程序 ID 组合)。如果用户不存在,它将为您创建一个。如果用户存在(这可能是使用 SqlMembershipProvider 创建用户时的情况),它只会将用户添加到角色而不创建用户。

再说一遍,是的,它应该可以工作。

【讨论】:

  • 谢谢。顺便说一句,我的问题是修辞性的。
【解决方案2】:

我从未尝试过,但根据我对 SqlMembershipProvider 和 SqlRoleProvider 的经验,我会说这是可能的。但是,我相信 SqlRoleProvider 将要求您将成员资格数据库存储(或至少镜像)到 Aspnet_regsql.exe 工具设置的架构中,因为它需要那些用于返回列表的方法(例如 RoleProvider.FindUsersInRole)的表用户。

有关实施自定义成员资格提供程序的信息,请参阅这篇文章:

MSDN: Implementing a Membership Provider

编辑:我看的越多,看起来 SqlMembershipProvider 和 SqlRoleProvider 之间的唯一交互级别是在 SQL DB 级别,所以只要您实现自定义 MembershipProvider 来存储(或镜像)您的用户SQL 中的数据和 SqlMembershipProvider 一样,你应该是金子。

【讨论】:

  • 为了澄清:不,自定义成员资格提供程序无论如何都不需要镜像 SqlMembershipProvider。
  • @gbs 感谢您在回答中提供的信息,我不知道角色提供程序会在您添加用户时自动为您设置用户。我想我应该更仔细地查看 RoleProvider 存储过程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多