使用自定义成员资格提供程序查看后台成员

时间:2015-01-18 12:15:18

标签: asp.net-membership umbraco umbraco7

我正在使用Umbraco 7.1,我有一个自定义成员资格提供程序,我根据各种不同的教程和博客文章设置。在大多数情况下,它运作良好,但有一些我不明白的事情:

我的自定义成员资格提供程序继承自System.Web.Security.MembershipProvider我读过的大多数教程说它应该继承自Umbraco.Web.Security.Providers.MembersMembershipProvider但是当我将其更改为继承时,我已经覆盖的方法不再被命中例如,如果我在ValidateUser(string username, string password)上设置一个断点,当我尝试登录时它不会被击中。有人可以解释我应该继承哪个班级,为什么?那太棒了。

其次,我已经覆盖了GetAllUsers(int pageIndex, int pageSize, out int totalRecords),所以当我登录后台并转到会员时,我可以看到所有在网站上注册的人的列表。但是,当我单击某个成员查看其详细信息时,GetUser(object providerUserKey, bool userIsOnline)方法会被命中,但providerUserKey始终为null。在我的会员保存的表中,我有一个ProviderUserKey列,我尝试将其设置为UniqueIdentifier和字符串,结果相同。因此,如果有人可以通过自定义会员提供商告诉我如何在后台查看会员详细信息,我将不胜感激。我认为这是可能的,但我可能是错的。

任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:0)

吉姆你应该继承自

  

Umbraco.Web.Security.Providers.MembersMembershipProvider

而不是

  

System.Web.Security.MembershipProvider

肯定。我已经做到了,它的确有效。你必须做错其他的事情。你如何调用Membership.ValidateUser(model.Username,model.Password)应该被检查。请参阅屏幕截图。enter image description here

为了让所有成员都在后端,我没有这样做,但你必须覆盖getallusers,如下所述。

public override System.Web.Security.MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords)
    {
        //create collection
        var collection = new MembershipUserCollection();
        // fetch members from my logic.
        //also add those to collection


        //get default members and add to collection.
        var coll2 = base.GetAllUsers(pageIndex, pageSize, out totalRecords);
        foreach (MembershipUser a in coll2)
        {
            collection.Add(a);
        }

        return collection;
    }