2011-05-15 111 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); 
}