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

参考

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) 

但是当我重写MembershipProvider.CreateUser时 ,我抱怨IDE 无法改变返回类型 。 那么我现在应该怎么做,

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

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

codeproject有一个很好的教程: 自定义成员资格提供者 。 您可能会发现它有助于了解您未正确的位置。

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

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

例如,当你回来时跟随。

return(MembershipUser)new CustomMembershipUser();