本节介绍在 MVC 4 模板上使用简单成员资格提供程序的功能。配置 OAuth 与应用程序兼容,以便使用来自 Google、Facebook、Twitter 或其他第三方提供程序的外部凭据登录应用程序。
本教程将创建一个使用简单成员资格提供程序的应用程序,然后添加第三方 (Google) OAuth 身份验证支持。
此功能在 MySQL Connector/NET 6.9.0 中添加。
要开始使用新项目,请执行以下操作
打开 Visual Studio,创建一个新的 ASP.NET MVC 4 Web 应用程序 类型的项目,并将项目配置为使用 .NET Framework 4.5。下图显示了带有选定项目的“新建项目”窗口的示例。
选择您喜欢的模板和视图引擎。本教程使用 Internet 应用程序模板,并使用 Razor 视图引擎(见下图)。或者,您可以通过选择 创建单元测试项目 来添加单元测试项目。
添加对
MySql.Data
、MySql.Data.Entities
和MySql.Web
程序集的引用。所选程序集必须与模板添加到项目中的 .NET Framework 和 Entity Framework 版本匹配。将有效的 MySQL 连接字符串添加到
web.config
文件中,类似于以下示例。<add name="MyConnection" connectionString="server=localhost; UserId=root; password=pass; database=MySqlSimpleMembership; logging=true;port=3305" providerName="MySql.Data.MySqlClient"/>
在
<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>
使用以下属性的有效值更新配置:
connectionStringName
、userTableName
、userIdColumn
、userNameColumn
和autoGenerateTables
。userTableName
:用于存储用户信息的表的名称。此表独立于提供程序生成的架构,可以在将来更改。userId
:用于存储userTableName
中记录的 ID 的列的名称。userName
:用于存储userTableName
中记录的名称/用户的列的名称。connectionStringName
:此属性必须与在web.config
文件中定义的连接字符串匹配。autoGenerateTables
:如果用于处理凭据的表已存在,则必须将其设置为false
。
使用配置的连接字符串名称更新您的
DBContext
类。从
Filters/
文件夹打开InitializeSimpleMembershipAttribute.cs
文件,找到SimpleMembershipInitializer
类。然后找到WebSecurity.InitializeDatabaseConnection
方法调用,并使用connectionStringName
、userTableName
、userIdColumn
和userNameColumn
的配置更新参数。如果连接字符串中配置的数据库不存在,则创建它。
运行 Web 应用程序后,成功后将显示生成的首页(见下图)。
如果应用程序成功执行,则生成的架构将类似于以下图所示的打开到表的对象浏览器。
要创建用户登录,请在生成的网页上点击
。输入用户名和密码,然后执行注册表单。此操作会将您重定向到已登录新创建用户的首页。新创建用户的數據可以位于
UserProfile
和Webpages_Membership
表中。
OAuth 是使用简单成员资格提供程序的网站的另一种身份验证选项。可以使用 Facebook、Twitter、Google 等外部帐户验证用户。
使用以下步骤在应用程序中启用使用 Google 帐户进行身份验证
在
App_Start
文件夹中找到AuthConfig.cs
文件。由于本教程使用 Google,因此找到
RegisterAuth
方法,并取消注释调用OauthWebSecurity.RegisterGoogleClient
的最后一行。运行应用程序。当应用程序运行时,点击 使用其他服务登录 下(见下图)。
打开登录页面。然后,点击 ,位于此操作将重定向到 Google 登录页面(在 google.com 上),并要求您使用您的 Google 帐户信息登录。
提交正确的凭据后,一条消息将请求您的应用程序访问用户信息的权限。阅读说明,然后点击
允许引用的操作,并将您重定向回应用程序的登录页面。应用程序现在可以注册帐户。 用户名 字段将填充相应的信息(在本例中,是与 Google 帐户关联的电子邮件地址)。点击 使用您的应用程序注册用户。
现在,新用户已使用 OAuth 从外部来源登录应用程序。有关新用户的信息存储在
UserProfile
和Webpages_OauthMembership
表中。
要使用其他外部选项对用户进行身份验证,您必须在启用 Google 提供程序的同一类中启用客户端。通常,提供程序要求您在允许 OAuth 身份验证之前注册您的应用程序,并且注册后,他们通常会提供一个令牌/密钥和一个在应用程序中注册提供程序时必须使用的 ID。