自定义成员资格提供者和MembershipUser

时间:2011-05-15 10:01:15

标签: asp.net asp.net-mvc-3 asp.net-membership

我有一个简单的问题。我现在正在考虑为我的应用程序创建自定义成员资格提供程序,因为使用单独的表来获取成员资格以及应用程序的其余部分并不是一个好主意。更不用说一些数据只是沿着表格复制..

我想知道的是,如果我还需要重新实现其他功能,例如检查用户是否在线,等等。或者,如果我复制部分db结构并实现提供程序,那就足够了吗?

UPDATE!

我真正想知道的是来自MembershipUser的方法(比如检查IF用户IsOnline等),它将适用于自定义数据库模式。

我知道如何实现自定义提供程序,我只想知道我是否有更多繁琐的工作来实现其他Membership *类的功能。

3 个答案:

答案 0 :(得分:3)

分享表的成员身份和应用程序的其余部分不是一个好主意?它必须在另一个表中。也许你的意思是单独的数据库 无论如何,你不需要任何方法。以下是您必须实施的必要方法:

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 MembershipUser GetUser(string username, bool userIsOnline)
  {
      throw new NotImplementedException();
  }

  public override bool ValidateUser(string username, string password)
  {
      throw new NotImplementedException();
  }

  public override int MinRequiredPasswordLength
  {
      get { throw new NotImplementedException(); }
  }

  public override bool RequiresUniqueEmail
  {
      get { throw new NotImplementedException(); }
  }
}  

你可以在网上找到几十个例子。有些是:
http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider
http://www.davidhayden.com/blog/dave/archive/2007/10/11/CreateCustomMembershipProviderASPNETWebsiteSecurity.aspx
http://www.shiningstar.net/aspnet_articles/customprovider/CustomProvider.aspx
http://www.devx.com/asp/Article/29256/0/page/3
http://www.15seconds.com/issue/050216.htm
http://www.codeproject.com/KB/aspnet/CustomMembershipProviders.aspx
http://www.codeproject.com/KB/aspnet/WSSecurityProvider.aspx

答案 1 :(得分:1)

您无需实施完整的MembershipProvider。只需实现您需要的位,并为其他未使用的方法抛出NotImplementedException

答案 2 :(得分:0)

如果我有一些实际上只需要与抽象方法相同的重写方法,那么最好的方法是什么?

实施例。

public override bool ValidateUser(string username, string password) 
{ 
//      This won't work but I need something like this      
        return Membership.ValidateUser(username, password);
}