文档主页
MySQL Connector/NET 开发者指南
相关文档 下载本手册
PDF (US Ltr) - 1.3Mb
PDF (A4) - 1.3Mb


MySQL Connector/NET 开发者指南  /  ...  /  教程:Connector/NET ASP.NET 会员资格和角色提供程序

6.2.1 教程:Connector/NET ASP.NET 会员资格和角色提供程序

许多网站都具有允许用户创建用户帐户的功能。然后,他们可以登录网站并享受个性化体验。这需要开发人员创建数据库表来存储用户信息,以及用于收集和处理这些数据的代码。这对开发人员来说是一个负担,并且开发的代码中可能会出现安全问题。但是,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 或更高版本。

  1. 使用 MySQL 命令行客户端程序(mysql)或其他合适的工具创建一个新的 MySQL 数据库。数据库使用什么名称并不重要,但请记录下来。您将在本教程后面构建的连接字符串中指定它。此数据库包含稍后自动为您创建的表,用于存储有关用户和角色的数据。

  2. 在 Visual Studio 中创建一个新的 ASP.NET 网站。如果您不确定如何执行此操作,请参阅第 6.4 节“教程:在 ASP.NET 中使用 LINQ on Entities 进行数据绑定”,其中演示了如何创建简单的 ASP.NET 网站。

  3. 将对 MySql.DataMySql.Web 的引用添加到网站项目中。

  4. 找到系统上的 machine.config 文件,它是 .NET Framework 的配置文件。

  5. 搜索 machine.config 文件以找到会员资格提供程序 MySQLMembershipProvider

  6. 添加属性 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 在数据库服务器上静默创建或升级架构,以包含存储会员资格信息所需的表。

  7. 现在需要创建上一步中引用的连接字符串。将网站的 web.config 文件加载到 Visual Studio 中。

  8. 找到标记为 <connectionStrings> 的节。添加以下连接字符串信息。

    <connectionStrings>
      <remove name="LocalMySqlServer"/>
      <add name="LocalMySqlServer"
           connectionString="Datasource=localhost;Database=users;uid=root;pwd=password"
           providerName="MySql.Data.MySqlClient"/>
    </connectionStrings>

    指定的数据库是在第一步中创建的。您也可以使用现有数据库。

  9. 此时构建解决方案以确保不存在错误。可以通过从主菜单中选择生成生成解决方案或按 F6 来完成此操作。

  10. ASP.NET 支持本地和远程身份验证用户的概念。使用本地身份验证时,用户在尝试访问网站时将使用其 Windows 凭据进行验证。这在 Intranet 环境中很有用。使用远程身份验证时,系统会在用户访问网站时提示其输入登录详细信息,并根据存储在 MySQL 服务器等数据库服务器中的会员资格信息检查这些凭据。您现在将看到如何选择这种身份验证形式。

    启动 ASP.NET 网站管理工具。可以通过单击解决方案资源管理器中的小锤子/地球图标来快速完成此操作。您也可以通过从主菜单中选择网站,然后选择ASP.NET 配置来启动此工具。

  11. 在 ASP.NET 网站管理工具中,单击安全选项卡并执行以下操作

    1. 单击用户身份验证类型链接。

    2. 选择来自 Internet选项。网站现在需要提供一个表单,以允许用户输入其登录详细信息。这些详细信息将根据存储在 MySQL 数据库中的会员资格信息进行检查。

  12. 您现在需要指定要使用的角色和会员资格提供程序。单击提供程序选项卡并执行以下操作

    1. 单击为每个功能选择不同的提供程序(高级)链接。

    2. 对于会员资格提供程序,请选择MySQLMembershipProvider选项;对于角色提供程序,请选择MySQLRoleProvider选项。

  13. 在 Visual Studio 中,通过单击生成,然后从主菜单中单击重新生成解决方案来重新生成解决方案。

  14. 检查是否已创建必要的架构。这可以使用 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)
  15. 假设所有内容都存在且正确,您现在可以为您的 Web 应用程序创建用户和角色。最简单的方法是使用 ASP.NET 网站管理工具。但是,许多 Web 应用程序都包含自己的用于创建角色和用户的模块。为简单起见,本教程将使用 ASP.NET 网站管理工具。

  16. 在 ASP.NET 网站管理工具中,单击安全选项卡。现在已启用会员资格和角色提供程序,您将看到用于创建角色和用户的链接。单击创建或管理角色链接。

  17. 您现在可以输入新角色的名称,然后单击添加角色以创建新角色。根据需要创建新角色。

  18. 单击后退按钮。

  19. 单击创建用户链接。您现在可以填写有关要创建的用户的的信息,并将该用户分配给一个或多个角色。

  20. 使用 mysql 命令解释器,您可以检查您的数据库是否已使用会员资格和角色数据正确填充。

    mysql> SELECT * FROM my_aspnet_users;
    mysql>  SELECT * FROM my_aspnet_roles;

在本教程中,您已经了解了如何在 ASP.NET Web 应用程序中设置 Connector/NET 会员资格和角色提供程序。