4.6.2.4 教程:简单的会员网络提供者

本部分记录了在 MVC 4 模板上使用简单成员资格提供程序的能力。配置 OAuth 兼容应用程序使用来自第三方提供商(如 Google、Facebook、Twitter 或其他提供商)的外部凭据登录。

本教程使用简单的成员身份提供程序创建一个应用程序,然后添加第三方 (Google) OAuth 身份验证支持。

笔记

此功能是在 MySQL Connector/NET 6.9.0 中添加的。

要求
  • 连接器/NET 6.9.x 或更高版本

  • .NET Framework 4.0 或更高版本

  • Visual Studio 2012 或更高版本

  • MVC 4

创建和配置新项目

要开始新项目,请执行以下操作:

  1. 打开 Visual Studio,新建一个ASP.NET MVC 4 Web Application类型的项目,并将项目配置为使用 .NET Framework 4.5。下图显示了带有所选项目的“新建项目”窗口的示例。

    图 4.6 简单成员资格:新项目

    内容在周围的文字中描述。

  2. 选择您喜欢的模板和视图引擎。本教程使用带有 Razor 视图引擎的Internet 应用程序模板(参见下图)。或者,您可以通过选择创建单元测试项目来添加单元测试项目

    图 4.7 简单成员资格:选择模板和引擎

    内容在周围的文字中描述。

  3. 添加对MySql.DataMySql.Data.EntitiesMySql.Web程序集的引用。选择的程序集必须与通过模板添加到项目中的 .NET Framework 和 Entity Framework 版本相匹配。

  4. 将有效的 MySQL 连接字符串添加到 web.config文件中,类似于以下示例。

    <add
      name="MyConnection"
      connectionString="server=localhost;
                        UserId=root;
                        password=pass;
                        database=MySqlSimpleMembership;
                        logging=true;port=3305"
      providerName="MySql.Data.MySqlClient"/>
  5. 在该<system.data>节点下,添加类似于以下示例的配置信息。

    <membership defaultProvider="MySqlSimpleMembershipProvider">
    <providers>
    <clear/>
    <add
      name="MySqlSimpleMembershipProvider"
      type="MySql.Web.Security.MySqlSimpleMembershipProvider,MySql.Web,
            Version=6.9.2.0,Culture=neutral,PublicKeyToken=c5687fc88969c44d"
      applicationName="MySqlSimpleMembershipTest"
      description="MySQLdefaultapplication"
      connectionStringName="MyConnection"
      userTableName="MyUserTable"
      userIdColumn="MyUserIdColumn"
      userNameColumn="MyUserNameColumn"
      autoGenerateTables="True"/>
    </providers>
    </membership>
  6. 使用以下属性的有效值更新配置:connectionStringNameuserTableNameuserIdColumnuserNameColumnautoGenerateTables

    • userTableName:存放用户信息的表名。该表独立于提供者生成的模式,将来可以更改。

    • userId:存储 中记录 ID 的列的名称 userTableName

    • userName: 列的名称,用于存储 userTableName.

    • connectionStringName: 此属性必须与文件中定义的连接字符串相匹配 web.config

    • autoGenerateTablesfalse:如果处理凭据的表已经存在 ,则必须将其设置为 。

  7. DBContext使用配置的连接字符串名称 更新您的类。

  8. InitializeSimpleMembershipAttribute.cs 从文件夹 中打开 Filters/文件并找到SimpleMembershipInitializer类。然后找到 方法调用并使用、 、 和 WebSecurity.InitializeDatabaseConnection 的配置更新参数。 connectionStringNameuserTableNameuserIdColumnuserNameColumn

  9. 如果连接字符串中配置的数据库不存在,则创建它。

  10. 运行Web应用程序后,成功显示生成的主页(见下图)。

    图 4.8 简单成员资格:生成的主页

    内容在周围的文字中描述。

  11. 如果应用程序成功执行,则生成的架构将类似于下图,显示了一个打开到表的对象浏览器。

    图 4.9 简单成员资格:生成的模式和表

    内容在周围的文字中描述。

  12. 要创建用户登录,请 在生成的网页上单击注册。键入用户名和密码,然后执行注册表。此操作会将您重定向到登录了新创建用户的主页。

    新创建用户的数据可以位于 UserProfileWebpages_Membership表中。

向项目添加 OAuth 身份验证

OAuth 是使用简单会员提供程序的网站的另一种身份验证选项。可以使用 Facebook、Twitter、Google 等外部帐户验证用户。

使用以下步骤在应用程序中启用使用 Google 帐户的身份验证:

  1. AuthConfig.cs在文件夹中 找到该App_Start文件。

  2. 由于本教程使用谷歌,找到该 RegisterAuth方法并取消注释它调用的最后一行 OauthWebSecurity.RegisterGoogleClient

  3. 运行应用程序。当应用程序运行时,单击 登录以打开登录页面。然后,单击“使用其他服务登录”下的“ Google ” (如下图所示)。

    图 4.10 使用 OAuth 的简单成员资格:Google 服务

    内容在周围的文字中描述。

  4. 此操作重定向到 Google 登录页面(位于 google.com),并要求您使用您的 Google 帐户信息登录。

  5. 提交正确的凭据后,一条消息会请求您的应用程序获得访问用户信息的权限。阅读说明,然后单击 接受以允许引用的操作,并重定向回应用程序的登录页面。

  6. 应用程序现在可以注册帐户。用户名字段将 填写适当的信息(在本例中为与 Google 帐户相关联的电子邮件地址)。单击 注册以向您的应用程序注册用户。

    现在,新用户使用 OAuth 从外部源登录到应用程序。有关新用户的信息存储在UserProfileWebpages_OauthMembership表中。

要使用另一个外部选项对用户进行身份验证,您必须在我们在本教程中启用 Google 提供程序的同一类中启用客户端。通常,提供者要求您在允许 OAuth 身份验证之前注册您的应用程序,并且一旦注册,他们通常会提供一个令牌/密钥和一个在应用程序中注册提供者时必须使用的 ID。