学习目录

  • 前言
  • 初级
    • 菜鸟入门
    • 配置详解
    • 简单二次开发
  • 进阶
    • UserManager 解析
    • RoleManager 解析
    • Validator 解析
    • SignInManager 解析

关于如何使用

博客园的童鞋们已经有很多这样的教程了,所以我就不用再这里班门弄斧咯,用最快的方式简单进行介绍。

我直接创建一个微软的示例项目和代码。

这个是 VS2019 的界面。

下图是 .Net Core 2.1+ 版本,微软已经把默认的细节封装起来了


这是简单的项目结构,默认是基于 Microsoft.EntityFrameworkCore 的 ORM 框架来操作数据库的。
我们先打开【Data -> Migrations -> ApplicationDbContext】这个文件。

public class ApplicationDbContext : IdentityDbContext
{public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options): base(options){}
}

微软已经定义好了一个可扩展的 DbContext 对象(不知道DbConext的戳这里),默认命名叫 ApplicationDbContext,当然根据需要你自己改就成了。

这里面没有任何 DbSet 属性或者相关的 EntityTypeConfiguretion 配置,那它的表结构是怎样的呢?我们对着 IdentityDbContext 按 【F12】进入到 代码的从元数据模式。

你发现它集成了 IdentityDbContext 基类,还定义了泛型的类型,IdentityUserIdentityRole 就是我们的实体了,当然通过名字也能知道一个是用户,一个是角色。

但还是没有 DbSet 属性,所以我们继续使用【F12】对着基类看下去。


终于看到了久违的 DbSet

我们发现了最后的 DbCotext 定义的都是用户相关的 DbSet。

所以,当你在使用 ApplicationDbContext 时,你就可以对用户和角色以及相关的 DbSet 进行操作了。

重点在 Startup.cs


主要关注的是第二个部分,通过调用的方法,我们看到了 AddDefaultIdentity<IdentityUser> 这个注入方式,这里面主要是对默认的类型进行注入服务,主要是包括了 UserManagerRoleManager 这两个类型,当然还有它们所需要的注入,请看下图:

这些在 UserManager 里的构造方法的参数,都需要注入相关服务,也是在 AddDefaultIdentity 里添加的,当然后期会详细说明。

再回来说下一个 AddDefaultUI,这个是干什么呢?还记得我们一开始说的吗?从 Core2.1+ 开始,微软把账号管理封装起来了,有兴趣可以自己去看源码。Github 源码地址:https://github.com/aspnet/Identity/tree/master/src/UI
当然,这里也有注释,告诉你怎么使用。

Adds a default, self-contained UI for Identity to the application using Razor Pages in an area named Identity.

翻译一下:添加默认的,包含了相关的 Razor 页面并放在了 area 下,命名为 Idenntity

还记得 Mvc 的 Area(区域)的概念吧?这个默认的 UI 在区域下,叫 Identity

在言论处,微软告诉你的注意事项

In order to use the default UI, the application must be using Microsoft.AspNetCore.Mvc, Microsoft.AspNetCore.StaticFiles and contain a _LoginPartial partial view that can be found by the application.

意思是:如果要启用默认 UI,你的应用程序必须使用 Mvc 和 StaticFiles 这个中间件,并且还要包含一个 _LoginPartial 这个分布视图。

根据上面的言论,我们可以在生成好的代码里,找找有没有提到的内容。



出于好奇,我们看看这个 _LoginPartial.cshtml 到底是个何方神圣.

其实就是一个判断,IsSignedIn 判断用户是否的登录,登录了就显示名字,没登录当然就显示【注册】【登录】这两个超链接咯。

如何开始使用

通过在构造函数中获取注入的服务就可以了。分别有三个:

  • UserManager
  • RoleManager
  • SignInManager

通过名称就能知道,UserManager 是对用户进行管理;RoleManager 则是针对角色;SignInManager 则是对登录和认证进行管理的。
具体的用法会在以后的章节继续说明,我这里就贴一小段示例代码来结束本章节的内容,也算是你入门了。

private readonly UserManager<IdentityUser> _userManageer;
public HomeController(UserManager<IdentityUser> userManager)
{_userManageer = userManager;
}/// <summary>
/// 用 ajax 请求创建一个用户。
/// </summary>
/// <param name="userName">用户名。</param>
/// <param name="password">密码。</param>
[HttpPost]
public async Task<IActionResult> CreateUserAsync(string userName, string password)
{var result = await _userManageer.CreateAsync(new IdentityUser { UserName = userName }, password);if (result.Succeeded){return Json("创建成功");}return BadRequest(result.Errors);
}

剖析 Microsoft.AspNetCore.Identity 的精髓 ——菜鸟入门相关推荐

  1. core identity mysql_Microsoft.AspNetCore.Identity 使用 mysql 报错处理

    1.使用mysql 首先要确定mysql connector 支的版本,正面是链接 https://dev.mysql.com/doc/connector-net/en/connector-net-e ...

  2. 使用Microsoft.AspNetCore.TestHost进行完整的功能测试

    简介 Microsoft.AspNetCore.TestHost是可以用于Asp.net Core 的功能测试工具.很多时候我们一个接口写好了,单元测试什么的也都ok了,需要完整调试一下,检查下单元测 ...

  3. C功底挑战Java菜鸟入门概念干货(一)

    一.认识Java 1.Java 程序比较特殊,它必须先经过编译,然后再利用解释的方式来运行.  2.Byte-codes 最大的好处是--可越平台运行,可让"一次编写,处处运行"成 ...

  4. Hadoop学习笔记(1) ——菜鸟入门

     Hadoop学习笔记(1) --菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户能够在不了解分布式底层细节的情况下.开发分布式 ...

  5. swift菜鸟入门视频教程-03-字符串和字符

    本人自己录制的swift菜鸟入门,欢迎大家拍砖.有什么问题能够在这里留言. 主要内容: 字符串字面量 初始化空字符串 字符串可变性 字符串是值类型 使用字符 计算字符数量 连接字符串和字符 字符串插值 ...

  6. python菜鸟工具-终于清楚python菜鸟入门教程

    Python是一款功能强大的脚本语言,具有丰富和强大的库,重要的是,它还具有很强的可读性,易用易学,非常适合编程初学者入门.以下是小编为你整理的python菜鸟入门教程 环境配置:下载Python并安 ...

  7. python主函数入口_Python 入口函数(菜鸟入门)

    Python 入口函数(菜鸟入门) 最近在组内研究专项项目,其中的一个现有工具是用 Python 开发的,我的目标是对这款工具的流程进行优化.虽然可以找到对应的开发者了解现有流程,然后结合我的研究提出 ...

  8. ASP.NET Core 源码阅读笔记(5) ---Microsoft.AspNetCore.Routing路由

    这篇随笔讲讲路由功能,主要内容在项目Microsoft.AspNetCore.Routing中,可以在GitHub上找到,Routing项目地址. 路由功能是大家都很熟悉的功能,使用起来也十分简单,从 ...

  9. 第十二节 VMware View 6.0 菜鸟入门 部署和安装2008 R2 RDS服务

    第十二节 VMware View 6.0 菜鸟入门 部署和安装2008 R2 的RDS服务 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处.作者信息和本声明.否则将追究法律责任.http ...

最新文章

  1. JSP--JavaBean
  2. 网络推广——网络推广专员是如何进行图像优化的?
  3. Yii 2.0: yii2-highcharts-widget创建饼状图
  4. 【渝粤教育】广东开放大学 电路分析基础 形成性考核 (59)
  5. 推荐!国外程序员整理的 C++ 资源大全(转载)
  6. WordPress的RSS订阅优化
  7. python database ioerror_python – IOError:[Errno 2]没有这样的文件或...
  8. selinux= 为 disabled_Selinux安全加固
  9. “丑东西”,正在成为一门生意
  10. softmax回归的从零开始实现-09-p4
  11. R语言大小写字母转换
  12. Eclipse SVN 项目后转换成Maven项目
  13. 软电话HTML界面,软电话条对接
  14. OpenStack在天河二号的大规模部署实践(转)
  15. 计算机构成教学反思,计算机教学反思
  16. 纯手工html+css实现静态游戏网首页(免费拿源码)
  17. 毕业季--写给未来的自己
  18. Word 文档乱码-请选择使文档可读的编码 重启电脑-不是解决方法的解决方法(可能已经晚了)
  19. 使用R进行描述性统计分析(连续性变量)
  20. java实现福利彩票抽奖_【福利】快来参与抽奖获得《Java程序设计》

热门文章

  1. mysql之密码复杂度设置
  2. go php 框架,go语言有几种框架
  3. 计算机一级msoffice讲义,XX全国一级计算机基础及MS Office应用讲义
  4. nashorn js 调用 java_Java8 Nashorn实现Java调用javascript代码
  5. dp_Zju_3688_The Review Plan II_不愿若菜
  6. java理解向上转型和向下转型
  7. Spring Cloud Ribbon 中的 7 种负载均衡策略
  8. 火柴人小程序linux,火柴人战争帝国
  9. 雪崩时没有一片雪花是无辜的
  10. [转]ASP.NET(C#)常用代码30例