我们需要在 ASP.NET WebFroms 应用程序中同时支持两个成员资格提供程序。确实用户通过选中复选框表示他/她想通过 Asp Net Sql Membership Provider
登录或 Asp Net Active Directory Membership Provider
我的想法是根据复选框选中的值以编程方式更改成员(member)资格提供程序。但是不知道怎么才能做到这一点。
任何帮助都受到高度赞赏。
最佳答案
您需要的是一个包含两个真实提供者的复合提供者和一个可以确定应该使用哪个提供者的服务。
更新
您的 CompositeProvider
可能看起来像这样,并且可以像任何其他提供程序一样在您的 web.config 中注册。
public class CompositeProvider : MembershipProvider
{
private MembershipProvider SqlProvider
{
get { return Membership.Providers["Sql Provider"]; }
}
private MembershipProvider AdProvider
{
get { return Membership.Providers["Ad Provider"]; }
}
// This property implements the logic that knows how
// to switch between the two providers.
private MembershipProvider Provider
{
get
{
var context = HttpContext.Current;
if (context != null)
{
var session = context.Session;
if (session != null &&
session["use_ad_provider"] == "true")
{
return AdProvider;
}
}
return SqlProvider;
}
}
public override bool ChangePassword(string username,
string oldPassword, string newPassword)
{
return Provider.ChangePassword(username, oldPassword, newPassword);
}
public override bool DeleteUser(string username,
bool deleteAllRelatedData)
{
return Provider.DeleteUser(username, deleteAllRelatedData);
}
public override bool EnablePasswordReset
{
get { return Provider.EnablePasswordReset; }
}
public override bool EnablePasswordRetrieval
{
get { return Provider.EnablePasswordRetrieval; }
}
// TODO: Implementation of all other members.
}
关于asp.net - 通过代码更改 ASP.NET 成员资格提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16105187/