实现自定义成员资格用户和自定义成员资格

时间:2011-11-11 06:17:22

标签: c# asp.net-membership override membership-provider membershipuser

参考

http://msdn.microsoft.com/en-us/library/6tc47t75%28v=VS.80%29.aspx

http://msdn.microsoft.com/en-us/library/ms366730.aspx

问题

在标题Create a Custom Membership Provider下面的第二个链接中,您会注意到他们提到了这个

  

您需要创建支持的自定义成员资格提供程序   您的自定义成员资格用户类型和自定义成员资格数据   商店。自定义成员资格的GetUser和CreateUser方法   可以编写提供程序以返回自定义成员资格的对象   用户类型。

下面的

是我的自定义成员资格用户,其中包含自定义字段

自定义成员资格用户

 public class CustomMembershipUser : MembershipUser
    {
        //private fields for internal use
        private bool _isMarried;
        private bool _hasLicense;
        private string _address;
        private int _userId;

        //public fields for use by end user

        public int UserId
        {
            get { return _userId; }
            set { _userId = value; }
        }
...

自定义成员资格提供程序

public class CustomMembershipProvider : MembershipProvider
    {
        .....

        public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)
        {
            throw new NotImplementedException();
        }
....

我完全按照他们的要求去做,返回我的自定义类型的会员用户

public override **CustomMembershipUser** CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status)

然后我被IDE抱怨了 覆盖MembershipProvider.CreateUser 时无法更改返回类型。那么我现在该怎么做呢,

  • 使用相同参数创建另一个方法并返回自定义成员资格用户?
  • 我不需要密码问题,安全问题字段如何摆脱它们?

2 个答案:

答案 0 :(得分:4)

您需要在函数中返回MembershipUser实例,该实例是它的返回类型。目前它没有返回它应该返回的内容。

codeproject有一个很好的教程:Custom Membership Providers。您可能会发现它有助于了解您哪些方面没有成功。

答案 1 :(得分:-1)

您不应该创建一个返回CustomMembershipUser的新方法。

您应该在自定义成员资格提供程序中只有 MembershipUser CreateUser(...)。在您返回之前,您需要将CustomMembershipUser转换为MembershipUser。

E.g。你回来后跟着走。

return(MembershipUser)new CustomMembershipUser();