剖析 Microsoft.AspNetCore.Identity 的精髓 —— 前言

什么是 Identity

Identity 在英文中的意思是:身份、标识,通俗易懂一些说白了就是用户管理。基本上每一个系统都绕不开这个功能,用户、权限的管理。

AspNetCore 的 Identity 有以下特点:

  • 包含了用户管理、角色管理、权限管理以及认证与授权机制;
  • 它是一个框架,不是一个完整的系统,你也可以认为是一个中间件;
  • 它面向的是开发人员,不是业务人员和用户;

AspNetCore Identity 的前世今生

Asp.Net 时代,微软就已经打造了一款包含用户、角色、权限、认证和授权的框架,它的名字叫 AspNet Membership。老一辈的程序员可能听过,但真正使用过的可能很难寻觅,基本上都是项目团队自己开发的。

MembershipAsp.Net 时代,也就是 WebForm 的时代,一直到 V3 的版本,后来有了 MVC ,微软才重新命名为 AspNet Identity

然后随着 AspNetCore 的普及,Identity 框架也随之迁移到了 AspNetCore 平台上,我们成为 IdentityCore

当你看 IdentityCore 源码时,你会发现下图这样的程序集

这也就表明,底层结构还是延续了 AspNet Identity 的程序。

以后我都将 AspNetCore 的 Identity 称之为 IdentityCore

愿景

我不是来说如何使用 IdentiyCore 框架,因为在博客园随便搜索一下,就能找到很多的博客,而且他们写的都比我好很多。但真正深入该框架的人好像很少,所以我这一套系列的文章主要是来教各位如何进行基于 IdentityCore 框架来进行二次开发,去实现自己的特殊逻辑,以及一些源代码的解析。

IdentityCore 毕竟是微软老外们针对于欧美国家来编写的框架,在一定程度上并不能满足我们天朝这样的互联网体系,所以当你明白了整套框架的内部结构和原理,我希望也有人可以基于 IdentityCore 搭建出符合天朝的认证框架。

为什么我不这么做?因为我木有时间啊…上有老,下有小,只能寄希望于后辈们了。

拯救世界和平的任务就交给你们了

IdentityCore 的源码

这个源码地址已经转移到了 https://github.com/aspnet/AspNetCore

IdentityCore 的核心包

打开 www.nuget.org 这个网站,输入【Microsoft.AspNetCore.Identity】,你会发现有很多相关的包,但真正核心的包只有下面几个:

  • Microsoft.Extensions.Identity.Core
    该程序集包含了整个 IdentityCore 框架的实体定义,大致包含 IdentityUser(用户) IdentityRole (角色) IdentityUserRole(用户与角色的关联) IdentityUserClaim(用户的声明) IdentityRoleClaim(角色的声明) IdentityUserLogin(用户第三方登录) ,也可以理解成数据库的表。

  • Microsoft.Extensions.Identity.Stores
    该程序主要用于对上面的实体进行基本的增删改查,包括用户管理(UserManager)和角色的管理(RoleManager),以及一些可以进行的配置,比如用户名的限制、密码的验证等等。具体的存储实现需要下载其他的包,比如 Microsoft.AspNetCore.Identity.EntityFrameworkCore 这是使用 EF Core 对数据存储的实现。

  • Microsoft.AspNetCore.Identity
    该程序集用于在 AspNetCore 的项目中对对认证和授权进行管理,也包括了对于 AspNetCore 项目中的基本配置,比如要使用 Identity 框架,就需要在 ConfigureServices 方法中执行 services.AddIdentity<TUser>() 这样的方法。

关于二次开发

基本上的二次开发都是基于以上几个核心的包,如果你想要 IdentityCore 支持其他 ORM 框架,比如 Dapper ,那你就基于 Microsoft.Extensions.Identity.Stores 这个包去二次开发,或者一些业务逻辑不符合你的特殊需求,也是使用这个包来开发;若你想要扩展字段,则需要 Microsoft.Extensions.Identity.Core 这个程序包,继承相关的类即可;

具体的将会在接下来的章节慢慢去讲解,如果你想成为大神,请自己写框架,而不是只会使用。

学习目录

  • 初级
  • 进阶
    • UserManager 解析
    • RoleManager 解析
    • Validator 解析
    • SignInManager 解析
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叫我 Teacher 周

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值