登入控件(Login、CreateUserWizard 等) → Membership API(Membership、MembershipUser) → MembershipProvider 抽象層 → 具體 Provider(SqlMembershipProvider、自訂 Provider)→ 資料來源(SQL Server、Access、Oracle 等)。Provider 隔離上層邏輯與資料存取細節。
Users.mdb,資料表 Users 欄位:UserID (PK)、UserName、Password、Email、IsApproved、LastLoginDate 等。MembershipProvider,覆寫核心方法:
ValidateUser:驗證帳號密碼(建議雜湊比對)。CreateUser:插入新使用者,回傳 MembershipUser。GetUser、UpdateUser、DeleteUser、ChangePassword 等。web.config 註冊並設為預設 Provider:
<membership defaultProvider="AccessMembershipProvider">
<providers>
<clear />
<add name="AccessMembershipProvider"
type="MyProviders.AccessMembershipProvider"
connectionStringName="AccessConnStr"
applicationName="MyApp"
enablePasswordReset="true"
requiresUniqueEmail="true" />
</providers>
</membership>
CreateUserWizard、Login、LoginView、LoginName、LoginStatus 控件,無需修改程式碼即可運作。ApplicationName 屬性必須正確實作,支援多應用程式共用資料庫。FormsAuthentication.HashPasswordForStoringInConfigFile (SHA1) 或更強雜湊(PBKDF2、BCrypt)。同樣架構適用於 Oracle、MySQL、PostgreSQL,只需更換 ADO.NET Provider(OracleClient、MySql.Data、Npgsql)與連接字串,SQL 語法微調即可。