在大多數企業級應用系統中,開發團隊往往習慣自行建構使用者管理模組。然而,ASP.NET 2.0 版本起,微軟已內建一套完整的會員驗證、授權與角色管理機制,包含現成的伺服器控制項與豐富的 API,能大幅減少重複造輪子的工時。本文將分享如何快速導入這套機制,並部署所需的資料庫結構。
ASP.NET Membership 提供開箱即用的功能:使用者註冊、登入、密碼重設、角色基礎授權(Role-Based Authorization)、設定檔屬性儲存等。這些功能透過 SqlMembershipProvider 與 SqlRoleProvider 運作,支援 SQL Server 資料庫,並可透過自訂 Provider 延伸至其他儲存媒介。採用內建機制不僅符合最佳實踐,更能確保安全性更新由微軟負責維護。
安裝 .NET Framework 2.0 後,系統會內建 aspnet_regsql.exe 工具,預設路徑為:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe
執行該工具會啟動精靈介面,引導您完成資料庫安裝:
.\SQLEXPRESS),並選擇現有資料庫或建立新資料庫(如 AspNetDB)。aspnet_Users、aspnet_Roles、aspnet_Membership 等核心物件。

資料庫建立完成後,需在專案的 Web.config 中設定連接字串並啟用 Provider:
<connectionStrings>
<add name="LocalSqlServer"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=AspNetDB;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<membership defaultProvider="SqlMembershipProvider">
<providers>
<clear />
<add name="SqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="LocalSqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="true"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
<roleManager enabled="true" defaultProvider="SqlRoleProvider">
<providers>
<clear />
<add name="SqlRoleProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="LocalSqlServer"
applicationName="/" />
</providers>
</roleManager>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="30" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
ASP.NET 提供 <asp:Login>、<asp:CreateUserWizard>、<asp:PasswordRecovery>、<asp:ChangePassword> 等控制項,拖拉即用,自動對接 Membership API。範例:
<asp:Login ID="Login1" runat="server"
DestinationPageUrl="~/Default.aspx"
FailureText="帳號或密碼錯誤,請重新輸入。">
</asp:Login>
在頁面或程式碼中即可輕鬆檢查角色:
<asp:LoginView> 針對不同角色顯示不同內容。User.IsInRole("Administrators") 或 Roles.IsUserInRole("Admin")。Web.config 的 <location> 區段設定 <allow roles="Admin" /> 與 <deny users="*" />。minRequiredPasswordLength、minRequiredNonalphanumericCharacters、passwordStrengthRegularExpression 等屬性。machine.config 或 Web.config 設定 <system.net><mailSettings><smtp> 區段,指定 SMTP 伺服器與連接埠。applicationName 設定相同。善用 ASP.NET 內建會員管理系統,能讓團隊專注於核心業務邏輯開發,同時享有企業級的安全性與擴充彈性。下一篇將深入探討自訂 Membership Provider 以整合既有使用者資料表。