许多网站都具有允许用户创建用户帐户的功能。然后,他们可以登录网站并享受个性化体验。这需要开发人员创建数据库表来存储用户信息,以及用于收集和处理这些数据的代码。这对开发人员来说是一个负担,并且开发的代码中可能会出现安全问题。但是,ASP.NET 引入了会员系统。该系统围绕会员资格、配置文件和角色提供程序的概念而设计,它们共同提供了实现用户系统的所有功能,而这些功能以前必须由开发人员从头开始创建。
目前,MySQL Connector/NET 包括用于会员资格(或简单会员资格)、角色、配置文件、会话状态、站点地图和 Web 个性化的 Web 提供程序。
本教程介绍如何设置 ASP.NET Web 应用程序以使用 Connector/NET 会员资格和角色提供程序。它假设您已安装 MySQL 服务器,以及 Connector/NET 和 Microsoft Visual Studio。本教程已使用 Connector/NET 6.0.4 和 Microsoft Visual Studio 2008 专业版进行了测试。建议您在本教程中使用 6.0.4 或更高版本。
使用 MySQL 命令行客户端程序(
mysql
)或其他合适的工具创建一个新的 MySQL 数据库。数据库使用什么名称并不重要,但请记录下来。您将在本教程后面构建的连接字符串中指定它。此数据库包含稍后自动为您创建的表,用于存储有关用户和角色的数据。在 Visual Studio 中创建一个新的 ASP.NET 网站。如果您不确定如何执行此操作,请参阅第 6.4 节“教程:在 ASP.NET 中使用 LINQ on Entities 进行数据绑定”,其中演示了如何创建简单的 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 凭据进行验证。这在 Intranet 环境中很有用。使用远程身份验证时,系统会在用户访问网站时提示其输入登录详细信息,并根据存储在 MySQL 服务器等数据库服务器中的会员资格信息检查这些凭据。您现在将看到如何选择这种身份验证形式。
启动 ASP.NET 网站管理工具。可以通过单击解决方案资源管理器中的小锤子/地球图标来快速完成此操作。您也可以通过从主菜单中选择
,然后选择 来启动此工具。在 ASP.NET 网站管理工具中,单击安全选项卡并执行以下操作
单击用户身份验证类型链接。
选择来自 Internet选项。网站现在需要提供一个表单,以允许用户输入其登录详细信息。这些详细信息将根据存储在 MySQL 数据库中的会员资格信息进行检查。
您现在需要指定要使用的角色和会员资格提供程序。单击提供程序选项卡并执行以下操作
单击为每个功能选择不同的提供程序(高级)链接。
对于会员资格提供程序,请选择MySQLMembershipProvider选项;对于角色提供程序,请选择MySQLRoleProvider选项。
在 Visual Studio 中,通过单击
,然后从主菜单中单击 来重新生成解决方案。检查是否已创建必要的架构。这可以使用
SHOW DATABASES;
和SHOW TABLES;
mysql 命令解释器来实现。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)
假设所有内容都存在且正确,您现在可以为您的 Web 应用程序创建用户和角色。最简单的方法是使用 ASP.NET 网站管理工具。但是,许多 Web 应用程序都包含自己的用于创建角色和用户的模块。为简单起见,本教程将使用 ASP.NET 网站管理工具。
在 ASP.NET 网站管理工具中,单击安全选项卡。现在已启用会员资格和角色提供程序,您将看到用于创建角色和用户的链接。单击创建或管理角色链接。
您现在可以输入新角色的名称,然后单击
以创建新角色。根据需要创建新角色。单击
按钮。单击创建用户链接。您现在可以填写有关要创建的用户的的信息,并将该用户分配给一个或多个角色。
使用 mysql 命令解释器,您可以检查您的数据库是否已使用会员资格和角色数据正确填充。
mysql> SELECT * FROM my_aspnet_users;
mysql> SELECT * FROM my_aspnet_roles;
在本教程中,您已经了解了如何在 ASP.NET Web 应用程序中设置 Connector/NET 会员资格和角色提供程序。