許多網站都提供讓使用者建立使用者帳戶的功能。然後他們可以登入網站並享受個人化的體驗。這需要開發人員建立資料庫表格來儲存使用者資訊,以及收集和處理此資料的程式碼。這對開發人員來說是一項負擔,而且開發的程式碼中可能會出現安全性問題。然而,ASP.NET 推出了成員資格系統。此系統是圍繞成員資格、設定檔和角色提供者的概念所設計,它們共同提供了實作使用者系統的所有功能,而這些功能以前必須由開發人員從頭開始建立。
目前,MySQL Connector/NET 包括適用於成員資格(或簡單成員資格)、角色、設定檔、工作階段狀態、網站地圖和 Web 個人化的 Web 提供者。
本教學課程將說明如何設定 ASP.NET Web 應用程式以使用 Connector/NET 成員資格和角色提供者。它假設您已安裝 MySQL Server、Connector/NET 和 Microsoft Visual Studio。本教學課程已使用 Connector/NET 6.0.4 和 Microsoft Visual Studio 2008 Professional Edition 進行測試。建議您在本教學課程中使用 6.0.4 或更新版本。
使用 MySQL 命令列用戶端程式 (
mysql
) 或其他合適的工具建立新的 MySQL 資料庫。資料庫使用的名稱並不重要,但請記錄下來。您會在稍後在本教學課程中建構的連接字串中指定它。此資料庫包含稍後會自動為您建立的表格,用於儲存有關使用者和角色的資料。在 Visual Studio 中建立新的 ASP.NET 網站。如果您不確定如何執行此操作,請參閱第 6.4 節「教學課程:使用 LINQ 在實體上於 ASP.NET 中進行資料繫結」,其中示範了如何建立簡單的 ASP.NET 網站。
將
MySql.Data
和MySql.Web
的參考新增至網站專案。在您的系統上找到
machine.config
檔案,它是 .NET Framework 的組態檔。搜尋
machine.config
檔案以尋找成員資格提供者MySQLMembershipProvider
。新增屬性
autogenerateschema="true"
。適當的區段現在應該類似於以下範例。注意為了簡潔起見,已排除某些資訊。
<membership> <providers> <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" ... connectionStringName="LocalSqlServer" ... /> <add name="MySQLMembershipProvider" autogenerateschema="true" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.0.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="LocalMySqlServer" ... /> </providers> </membership>
注意連接字串
LocalMySqlServer
連線到包含成員資格資料庫的 MySQL 伺服器。autogenerateschema="true"
屬性會導致 Connector/NET 在資料庫伺服器上靜默建立或升級架構,以包含儲存成員資格資訊所需的表格。現在需要建立上一個步驟中參考的連接字串。將網站的
web.config
檔案載入 Visual Studio 中。找到標記為
<connectionStrings>
的區段。新增下列連接字串資訊。<connectionStrings> <remove name="LocalMySqlServer"/> <add name="LocalMySqlServer" connectionString="Datasource=localhost;Database=users;uid=root;pwd=password" providerName="MySql.Data.MySqlClient"/> </connectionStrings>
指定的資料庫是在第一個步驟中建立的。您也可以選擇使用現有的資料庫。
此時,建置解決方案以確保沒有錯誤。這可以透過從主功能表中選取 F6 來完成。
、 ,或按下ASP.NET 支援本機和遠端驗證使用者的概念。使用本機驗證時,使用者在嘗試存取網站時,會使用其 Windows 認證進行驗證。這在內部網路環境中可能很有用。使用遠端驗證時,會提示使用者在存取網站時輸入其登入詳細資料,並根據儲存在 MySQL Server 等資料庫伺服器中的成員資格資訊檢查這些認證。您現在將了解如何選擇此形式的驗證。
啟動 ASP.NET 網站管理工具。這可以透過按一下方案總管中的小型鎚子/地球圖示快速完成。您也可以從主功能表中選取
,然後選取 來啟動此工具。在 ASP.NET 網站管理工具中,按一下 安全性索引標籤,並執行下列動作
按一下 使用者驗證類型連結。
選取 來自網際網路選項。網站現在需要提供表單,讓使用者輸入其登入詳細資料。詳細資料將根據儲存在 MySQL 資料庫中的成員資格資訊進行檢查。
您現在需要指定要使用的角色和成員資格提供者。按一下 提供者索引標籤,並執行下列動作
按一下 為每個功能選取不同的提供者 (進階) 連結。
針對成員資格提供者,選取 MySQLMembershipProvider 選項,針對角色提供者,選取 MySQLRoleProvider 選項。
在 Visual Studio 中,從主功能表按一下
,然後按一下 ,以重建解決方案。檢查是否已建立必要的架構。這可以使用 mysql 命令直譯器使用
SHOW DATABASES;
和SHOW TABLES;
來實現。mysql> SHOW DATABASES; +---------------------+ | Database | +---------------------+ | information_schema | | mysql | | test | | users | | world | +---------------------+ 5 rows in set (0.01 sec) mysql> SHOW TABLES; +---------------------------+ | Tables_in_users | +---------------------------+ | my_aspnet_applications | | my_aspnet_membership | | my_aspnet_profiles | | my_aspnet_roles | | my_aspnet_schemaversion | | my_aspnet_users | | my_aspnet_usersinroles | +---------------------------+ 7 rows in set (0.00 sec)
假設一切都已正確設定,您現在可以為您的網頁應用程式建立使用者和角色。最簡單的方法是使用 ASP.NET 網站管理工具。然而,許多網頁應用程式都包含自己的模組來建立角色和使用者。為了簡化起見,本教學課程將使用 ASP.NET 網站管理工具。
在 ASP.NET 網站管理工具中,點擊 安全性 索引標籤。現在會員資格和角色提供者都已啟用,您將看到用於建立角色和使用者的連結。點擊 建立或管理角色 連結。
您現在可以輸入新角色的名稱,然後點擊
以建立新角色。根據需要建立新角色。點擊
按鈕。點擊 建立使用者 連結。您現在可以填寫要建立的使用者的資訊,並將該使用者分配給一個或多個角色。
使用 mysql 命令直譯器,您可以檢查您的資料庫是否已正確填入會員資格和角色資料。
mysql> SELECT * FROM my_aspnet_users;
mysql> SELECT * FROM my_aspnet_roles;
在本教學課程中,您已了解如何設定 Connector/NET 會員資格和角色提供者,以在您的 ASP.NET 網頁應用程式中使用。