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