mvc identity mysql_自定义ASP.NET Identity(三)- 实现自定义MySQL ASP.NET Identity存储提供程序...

ASP.NET Identity是一个可扩展的系统,你可以创建属于你自己的存储提供程序并且将它集成到你的应用中,而不需要重构你的应用。本章将介绍如何创建一个ASP.NET Identity的MySQL存储提供程序。关于如何创建自定义存储提供程序的概述请查看自定义ASP.NET Identity(一)- 自定义ASP.NET Identity存储提供程序。要完成这个指南,你必须安装Visual Studio 2013 Update 2。 这个指南将包含如下内容: 怎样在Azure上创建MySQL数据库实例。

怎样在Azure使用MySQL客户端工具 (MySQL Workbench)创建表并管理数据库。

怎样在MVC工程中替换默认ASP.NET Identity存储实现为自定义实现。

下载完整工程

完成这个指南后,你将有一个使用驻留在Azure上的MySQL数据库的ASP.NET Identity的MVC应用工程。

步骤

在这个指南中你将完成:

1、在Azure上创建MySQL数据库

2、在MySQL中创建ASP.NET Identity表结构

3、创建一个MVC应用并且配置它使用MySQL提供程序

4、运行应用

本文不包含简介ASP.NET Identity的结构和如何实现自定义存储提供程序的说明。这些信息请参看自定义ASP.NET Identity(一)- 自定义ASP.NET Identity存储提供程序。

回顾MySQL存储提供程序类

回到之前创建MySQL存储提供程序的步骤,让我们看看构成存储提供程序的这些类。你需要这些类来管理数据库操作并且应用程序调用它们来管理用户和角色。

存储类 UserStore - 包含添加,更新或者检索用户的操作。

RoleStore - 包含添加,删除,更新和检索角色的操作。

数据访问层类

在这个例子中,数据访问成类包含操作数据表的SQL语句;然而,在你的代码中你可能想要使用对象-关系映射(ORM)框架,如Entity Framework或者NHibernate。特别是,你的应用程序在没有ORM包含的延迟加载和对象缓存的情况下可能会遇到性能问题。更多信息请参看 ASP.Net Identity 2.0 without Entity Framework? MySQLDatabase - 包含执行MySQL数据库操作的连接和方法。UserStore和RoleStore都实例化这个类的一个实例。

RoleTable - 包含存储角色的数据表操作。

UserClaimsTable - 包含存储用户Claims的数据表操作。

UserLoginsTable - 包含存储用户登录信息的数据表操作。

UserRoleTable - 包含存储用户分配角色的数据表操作。

UserTable - 包含存储用户的数据表操作。

在Azure上创建MySQL数据库实例

2、点击 页面上的 +NEW按钮,并且选择STORE。

NewStore.png?cdn_id=2015-05-22-001

3、在 Choose and Add-on 向导中, 选择 ClearDB MySQL Database 并且点击对话框按钮的右侧的下一步

ChooseMySqlDb.png?cdn_id=2015-05-22-001

4、默认是Free计划,修改Name为IdentityMySQLDatabase。选择区域后点击下一步。

PersonalizeAddOn.png?cdn_id=2015-05-22-001

5、点击复选框后完成。

ReviewPurchase.png?cdn_id=2015-05-22-001

6、数据库创建完成之后, 你可以从管理门户的ADD-ONS标签对数据库进行管理。

ManageAddOns.png?cdn_id=2015-05-22-001

7、点击在这个页面的底部的CONNECTION INFO可以查看链接信息。

GetConnectionInfo.png?cdn_id=2015-05-22-001

8、点击复制按钮复制链接字符串并且将其应用到你的MVC应用中。

CopyConnectionInfo.png?cdn_id=2015-05-22-001

在MySQL数据库中创建ASP.NET Identity表

Install MySQL Workbench tool to connect and manage MySQL database 安装MySQL Workbench工具。该工具可以从MySQL下载页面下载。

运行应用并且点击MySQLConnections + 添加一个新的链接。使用从Azure创建MySQL数据库连接串,可以很容易的创建这个指南。

建立连接之后,打开一个新的Query 标签;粘贴 MySQLIdentity.sql 文件中的命令到查询窗口,并且执行,完成创建数据库表。

现在 ASP.NET Identity 需要的所有的MySQL表已经在Azure上创建完成。如下显示。

img9.jpg?cdn_id=2015-05-22-001

从模板创建MVC应用并且配置其使用MySQL提供程序

从CodePlex下载ASP.NET.Identity.MySQL工程 下在源代码。

解压.zip文件到本地文件夹。

打开AspNet.Identity.MySQL解决方案并且生成它。

从模板创建一个新的MVC应用 右键点击AspNet.Identity.MySQL解决方案并且 Add, New Project

在Add New Project 对话框选择Visual C#->Web 然后选择ASP.NET Web Application。输入工程名称IdentityMySQLDemo;然后点击OK按钮。

imgF.jpg?cdn_id=2015-05-22-001

在New ASP.NET Project 对话框,选择MVC模板,保持默认选项不变 (包含:Individual User Accounts 作为身份验证方法) 然后点击 OK。

img13.jpg?cdn_id=2015-05-22-001

在解决方案管理器中,右键点击IdentityMySQLDemo工程,选择 Manage NuGet Packages。在查找文本框中输入Identity.EntityFramework。在结果列表中选择这个包,点击 Uninstall。你会被提示卸载依赖包EntityFramework。点击是,我们在这个应用中将不再使用这个包。

右键点击IdentityMySQLDemo工程,选择 Add, Reference, Solution, Projects; 选择AspNet.Identity.MySQL 工程并且点击 OK。

在IdentityMySQLDemo 工程中, 替换所有引用到

using Microsoft.AspNet.Identity.EntityFramework;

using AspNet.Identity.MySQL;

在IdentityModels.cs, 设ApplicationDbContext 到MySqlDatabase 并且包括一个接受一个连接名称参数的构造函数。

public classApplicationDbContext : MySQLDatabase

{public ApplicationDbContext(stringconnectionName)

:base(connectionName)

{

}public staticApplicationDbContext Create()

{return new ApplicationDbContext("DefaultConnection");

}

}

打开IdentityConfig.cs 文件。在 ApplicationUserManager.Create 方法,使用下面的代码替换 UserManager :

var manager = newApplicationUserManager(new UserStore(

context.Get() as MySQLDatabase));

打开web.config文件并且使用之前创建的MySQL数据库的信息替换DefaultConnection字符串中下面高亮部分的内容:

Data Source=;User Id=;Password="providerName="MySql.Data.MySqlClient" />

隐形应用并且连接到MySQL DB

邮件点击IdentityMySQLDemo工程并且Set as Startup Project 。

点击Ctrl + F5创建并运行应用。

点击页面顶部的 Register 标签。

输入用户名和密码后,点击Register。

RegisterUser.png?cdn_id=2015-05-22-001

一个新用户被注册,并且已经登录。

ShowNewUser.png?cdn_id=2015-05-22-001

回到MySQL Workbench 工具,检查IdentityMySQLDatabase 表的内容。表中已经存在你注册的新用户。

ShowDb.png?cdn_id=2015-05-22-001

下一步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值