2011-05-15 189 views
1

我有一个简单的问题。现在我正在考虑创建我的应用程序自定义的成员提供,由于采用籍及应用程序的其余部分分开的表是不是好主意..更何况一些数据仅仅是沿表复制..自定义会员供应商和会员用户

什么我想知道,如果我还必须重新实现其他功能,如检查用户是否在线等。或者,如果我复制数据库结构的一部分和实现提供者就足够了?

更新!

我真正想知道的是,从该的MembershipUser方法(如检查,如果用户IsOnline等),将在自定义数据库模式工作。

我知道如何实现自定义的供应商,我只是想知道,如果我有更多的繁琐工作实现从其他会员*类的功能。

+0

你应该找到SO第一,大量的确切同样的问题的 – balexandre 2011-05-15 10:37:48

+0

可能重复的[自定义的MembershipProvider在.NET 4.0(http://stackoverflow.com/questions/5701673/custom-membershipprovider-in-net -4-0) – balexandre 2011-05-15 12:09:55

回答

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

您不需要实施完整的MembershipProvider。只需实现你需要的位,而其他未使用的方法则抛出一个NotImplementedException

0

什么是最好的方法,如果我有真的只需要表现得一样的抽象方法的一些重写的​​方法?

例子。

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