博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自定义ASP.NET Identity(三)- 实现自定义MySQL ASP.NET Identity存储提供程序
阅读量:6289 次
发布时间:2019-06-22

本文共 3360 字,大约阅读时间需要 11 分钟。

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

下载完整工程

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

 

你可以从下载完整的MySQL 存储提供程序代码。

 

步骤

在这个指南中你将完成:

1、在Azure上创建MySQL数据库

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

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

4、运行应用

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

 

回顾MySQL存储提供程序类

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

存储类
  • - 包含用户属性。
  • - 包含添加,更新或者检索用户的操作。
  • - 包含角色属性。
  • - 包含添加,删除,更新和检索角色的操作。

 

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

 

在Azure上创建MySQL数据库实例

1、登录到.

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
  1. 安装MySQL Workbench工具。该工具可以从下载。
  2. 运行应用并且点击MySQLConnections + 添加一个新的链接。使用从Azure创建MySQL数据库连接串,可以很容易的创建这个指南。
  3. 建立连接之后,打开一个新的Query 标签;粘贴 文件中的命令到查询窗口,并且执行,完成创建数据库表。
  4. 现在 ASP.NET Identity 需要的所有的MySQL表已经在Azure上创建完成。如下显示。

 

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

如果需要, 安装 或者 Update 2。

从CodePlex下载ASP.NET.Identity.MySQL工程

  1. 浏览资源库的URL  .
  2. 下在源代码。 
  3. 解压.zip文件到本地文件夹。
  4. 打开AspNet.Identity.MySQL解决方案并且生成它。

从模板创建一个新的MVC应用

  1. 右键点击AspNet.Identity.MySQL 解决方案并且 Add, New Project
  2. Add New Project 对话框选择Visual C#->Web 然后选择ASP.NET Web Application。输入工程名称IdentityMySQLDemo;然后点击OK按钮。
  3. New ASP.NET Project 对话框,选择MVC模板,保持默认选项不变 (包含:Individual User Accounts 作为身份验证方法) 然后点击 OKimg13.jpg?cdn_id=2015-05-22-001

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

  5. 右键点击IdentityMySQLDemo工程,选择 Add, Reference, Solution, Projects; 选择AspNet.Identity.MySQL 工程并且点击 OK
  6. 在IdentityMySQLDemo 工程中, 替换所有引用到
    using Microsoft.AspNet.Identity.EntityFramework;
    using AspNet.Identity.MySQL;
  7. 在IdentityModels.cs, 设ApplicationDbContextMySqlDatabase 并且包括一个接受一个连接名称参数的构造函数。
    public class ApplicationDbContext : MySQLDatabase{    public ApplicationDbContext(string connectionName)        : base(connectionName)    {    }    public static ApplicationDbContext Create()    {        return new ApplicationDbContext("DefaultConnection");    }}
  8. 打开IdentityConfig.cs 文件。在 ApplicationUserManager.Create 方法,使用下面的代码替换 UserManager :
    var manager = new ApplicationUserManager(    new UserStore
    ( context.Get
    () as MySQLDatabase));
  9. 打开web.config文件并且使用之前创建的MySQL数据库的信息替换DefaultConnection字符串中下面高亮部分的内容:

隐形应用并且连接到MySQL DB

  1. 邮件点击IdentityMySQLDemo工程并且Set as Startup Project
  2. 点击Ctrl + F5创建并运行应用。 
  3. 点击页面顶部的 Register 标签。
  4. 输入用户名和密码后,点击Register。
    RegisterUser.png?cdn_id=2015-05-22-001
  5. 一个新用户被注册,并且已经登录。
    ShowNewUser.png?cdn_id=2015-05-22-001
  6. 回到MySQL Workbench 工具,检查IdentityMySQLDatabase 表的内容。表中已经存在你注册的新用户。

下一步

在应用中怎样启用其它的身份验证方法, 请参考 .

学习如何在你的数据库中使用OAuth和设置限制用户访问你的应用中的角色,请参看 .

转载于:https://www.cnblogs.com/abies/p/4560415.html

你可能感兴趣的文章
国内可用的yum源
查看>>
linux df -h 命令卡住 解决方法
查看>>
spring是什么,Spring能帮我们做什么
查看>>
Codeforces 861D - Polycarp's phone book
查看>>
FreePortScanner.java
查看>>
HttpURLConnection 文件上传限制
查看>>
javascript类式继承新的尝试
查看>>
真正掌握vuex的使用方法(四)
查看>>
MySql的Communications link failure解决办法
查看>>
GB2312编码
查看>>
架构探险笔记2
查看>>
sparse bayesian model
查看>>
jQuery 无刷新评论
查看>>
Oracle临时表
查看>>
Linux下配置一个VNC服务器
查看>>
jquery-form 中文API
查看>>
谈谈NITE 2的第一个程序UserViewer
查看>>
/bin/bash^M: 坏的解释器: 没有那个文件或目录
查看>>
解决:Unable to execute dex: GC overhead limit exceeded
查看>>
Linux kali 3.14-kali1-amd64 编译安装 wine 1.7.33
查看>>