首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

ASP.NET 2.0 Membership 完整設定指南:資料庫、驗證模式與 Provider 組態

     編輯:關於.NET

.NET 2.0 開啟了「少寫代碼、多做設定」的開發範式。本文詳細說明如何啟動 ASP.NET 2.0 Membership 系統的核心引擎——從建立資料庫、設定驗證模式,到註冊 Membership、Roles、Profile 三大 Provider,逐步完成一套可直接投入生產的標準會員系統。

1. 建立專屬資料庫

執行 aspnet_regsql.exe (位於 C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727),依精靈指引在 SQL Server 建立標準結構描述,包含使用者、角色、設定檔等資料表。這些資料表支援 Cookie 驗證、跨站台單一登入、密碼找回、電子郵件驗證等進階功能。

接著在 web.config 的 <connectionStrings> 區段加入連線字串:

<connectionStrings>
  <add name="MemberShip_Connection"
       connectionString="Data Source=.;Initial Catalog=MemberShip_Demo;Persist Security Info=True;User ID=sa;Password=abcdefg"
       providerName="System.Data.SqlClient" />
</connectionStrings>

2. 設定表單驗證

在 <system.web> 區段宣告驗證模式為 Forms,並指定登入頁面:

<authentication mode="Forms">
  <forms loginUrl="~/Membership/authing/Login.aspx" timeout="30000" />
</authentication>

mode="Forms" 表示採用自訂網頁表單驗證,而非 Windows NT 整合驗證;loginUrl 指定未驗證使用者存取受保護頁面時的導向目標。

3. 註冊三大 Provider

Provider 如同資料配接器,決定資料儲存媒介。官方提供 SqlMembershipProvider、SqlRoleProvider、SqlProfileProvider 三種 SQL Server 實作:

Membership Provider

<membership defaultProvider="Main_SqlMemberShipProvider" userIsOnlineTimeWindow="20">
  <providers>
    <add connectionStringName="MemberShip_Connection"
         enablePasswordRetrieval="false"
         enablePasswordReset="true"
         requiresQuestionAndAnswer="true"
         passwordFormat="Hashed"
         applicationName="DEMO_Membership"
         name="Main_SqlMemberShipProvider"
         type="System.Web.Security.SqlMembershipProvider" />
  </providers>
</membership>

關鍵屬性說明:passwordFormat="Hashed" 以 SHA1 雜湊儲存密碼;applicationName 區分多應用程式共用同一資料庫時的使用者隔離。

Role Manager

<roleManager enabled="true" cacheRolesInCookie="true" cookieName=".ASPROLES"
             cookieRequireSSL="true" defaultProvider="SqlRoleProvider">
  <providers>
    <add connectionStringName="MemberShip_Connection"
         applicationName="DEMO_Membership"
         name="SqlRoleProvider"
         type="System.Web.Security.SqlRoleProvider" />
  </providers>
</roleManager>

Profile Provider

<profile enabled="true" defaultProvider="SqlProfileProvider">
  <providers>
    <add name="SqlProfileProvider"
         type="System.Web.Profile.SqlProfileProvider"
         connectionStringName="MemberShip_Connection"
         applicationName="DEMO_Membership"
         description="SqlProfileProvider for SampleApplication" />
  </providers>
  <properties>
    <add name="UserAge" type="System.String" defaultValue="21" />
    <add name="UserSex" type="System.String" defaultValue="Male" />
  </properties>
</profile>

4. 驗證成果

完成設定後,拖曳 Login、CreateUserWizard 等控制項即可直接運作。透過 Membership.GetUser()、Roles.GetRolesForUser()、Profile.UserAge 等 API 即可在程式碼中存取目前登入使用者的資訊。網站管理工具也能正常編輯使用者與角色。

Membership 架構圖 aspnet_regsql 精靈 資料庫結構 網站管理工具 使用者管理介面 程式碼存取 Profile 範例

下一章將示範如何利用 ObjectDataSource 將這些資料繫結至 GridView 與 FormView,打造完整後台管理介面。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved