所有 Membership 功能均透過 MembershipProvider 衍生類別實作,框架內部僅依賴此抽象介面。主要抽象方法包含:CreateUser、ValidateUser、ChangePassword、GetUser、FindUsersByName 等;屬性包含 ApplicationName、PasswordFormat、RequiresUniqueEmail 等設定。
基類中密碼加密/解密/驗證輔助方法(EncodePassword、DecryptPassword、EncryptPassword、GenerateSalt、UnEncodePassword)標記為 internal,導致自訂 Provider 無法直接呼叫,只能自行重寫或透過反射繞過。建議微軟改為 protected 以利繼承複用。
connectionStringName、applicationName、passwordFormat(Clear/Hashed/Encrypted)。aspnet_regsql.exe 建立 aspnetdb 資料庫(含 Users、Roles、Applications 等資料表與預存程序)。Membership 類別依設定檔實例化指定 Provider,委派所有操作。MembershipProvider,實作所有抽象成員。web.config 註冊新 Provider 並設為 defaultProvider。ApplicationName 隔離多應用程式使用者。GetAllUsers、FindUsersByName)必須支援分頁,避免記憶體溢位。