我的用户将对Active Directory或数据库使用表单身份验证。那里没有Windows集成认证!!
我想要的是当用户提交身份验证表单时,它会尝试针对Active Directory验证用户,如果失败,请尝试使用数据库。
我该怎么做?我想到的是建立一个自定义成员资格提供程序,它将封装逻辑,但我不知道如何开始。
有没有更好的主意?
答案 0 :(得分:4)
您将能够实现此目的的唯一方式是创建自定义提供程序。
在一个完美的世界中,您可以简单地创建一个Facade提供程序,然后根据需要利用适当的提供程序SQL或AD来验证并返回MembershipUser
到您认为必要的任何完整程度。
在现实世界中,这仍然是可能的,但你需要跳过几个环节:
providers
元素的membership
子元素中,并将其设置为membership
元素中的defaultProvider Membership.Providers
集合访问配置的提供程序,以根据需要执行这些功能。如果您需要使用角色并且适用时,您可能会发现需要重复此模式,实现将会更复杂,并且超出了本文的范围。
或者,可以找到SQL提供程序的完整源代码here,这是实现工业级自定义提供程序的一个很好的起点和指导。
我建议在尝试从头开始实施自定义安全功能之前,首先探索阻力最小(并且最少劳动和头痛)的路径并加入外观。
祝你好运。答案 1 :(得分:0)
正如您所说,您最好创建一个自定义成员资格提供程序来处理这种情况。
MSDN很好地概述了创建自定义成员资格提供程序here和一个很棒的example of an ODBC membership provider。
它应该给你一个良好的开端。