We are in need of supporting two Membership providers simultaneously in an ASP.NET WebFroms application. Indeed user by checking a Checkbox indicates that he/she wants to login via Asp Net Sql Membership Provider
or Asp Net Active Directory Membership Provider
My idea is changing Membership provider programmatically based on Checkbox checked value. But do not know how can do this.
Any help is highly appreciated.
What you need is a composite provider that wraps the two real providers and a service that can determine which provider should be used.
UPDATE
Your CompositeProvider
might look like this and can be registered in your web.config just like any other provider.
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.
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With