3

我的用户将对 Active Directory 或数据库使用表单身份验证。那里没有 Windows 集成身份验证!

我想要的是当用户提交身份验证表单时,它将尝试针对 Active Directory 验证用户,如果失败,请尝试使用数据库。

我怎样才能做到这一点?我的想法是构建一个自定义会员提供程序,它将封装逻辑,但我不知道如何开始。

有更好的主意吗?

4

2 回答 2

4

您将能够实现这一点的唯一方法是创建自定义提供程序。

在一个完美的世界中,您可以简单地创建一个外观提供程序,然后根据需要利用适当的提供程序、SQL 或 AD 来进行身份验证并返回MembershipUser到您认为必要的任何程度的完整性。

在现实世界中,这仍然是可能的,但您需要跳过几个环节:

  • 创建您的外观提供程序并将其放在元素的providers元素中并将其设置为元素membership中的 defaultProvidermembership
  • 正确配置SqlMembershipProviderActiveDirectoryMembershipProvider并将它们放在外观之后。
  • 从您的外观,从静态Membership.Providers集合访问配置的提供程序以根据需要执行功能。

如果你需要使用角色,你可能会发现你需要重复这个模式,虽然它适用,但实现会有点复杂,超出了本文的范围。

或者,可以在此处找到 SQL 提供程序的完整源代码,这是实施工业级自定义提供程序的一个很好的起点和指南。

我建议在尝试从头开始实施自定义安全功能之前,首先探索阻力最小的路径(以及最少的劳动和头痛)并增加外观。

祝你好运。

于 2010-07-18T00:29:55.657 回答
0

正如您所说,您最好创建一个自定义成员资格提供程序来处理这种情况。

MSDN 很好地概述了此处创建自定义成员资格提供程序,以及 ODBC 成员资格提供程序的一个很好的示例

它应该给你一个好的开始。

于 2010-07-14T02:51:24.770 回答