加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

按代码更改ASP.NET成员资格提供程序

发布时间:2020-12-16 07:19:12 所属栏目:asp.Net 来源:网络整理
导读:我们需要在ASP.NET WebFroms应用程序中同时支持两个成员资格提供程序.事实上,用户通过检查复选框表明他/她想通过Asp Net Sql成员资格提供程序或Asp Net Active Directory成员资格提供程序登录 我的想法是根据Checkbox选中的值以编程方式更改成员资格提供程序
我们需要在ASP.NET WebFroms应用程序中同时支持两个成员资格提供程序.事实上,用户通过检查复选框表明他/她想通过Asp Net Sql成员资格提供程序或Asp Net Active Directory成员资格提供程序登录

我的想法是根据Checkbox选中的值以编程方式更改成员资格提供程序.但不知道怎么能这样做.

任何帮助都非常感谢.

解决方法

您需要的是一个复合提供程序,它包装两个真正的提供程序和一个可以确定应该使用哪个提供程序的服务.

UPDATE

您的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.
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读