前言

默认的 Identity 实体类型在大多数时候已经基本够用,很多时候也只是稍微在 IdentityUser 类中增加一些自定义数据字段,比如头像。这次,我要向园友隆重介绍我魔改之后的 Identity 实体类,能支持一些特别风骚的操作。当然也完全兼容内置的 UserManager、RoleManager 和 SignInManager,毕竟也是从内置类型继承扩展出来的。

正文

魔改的实体类基于一组我自定义实体接口,这组接口我也实现了一组打包好的基础类型。因为 Identity 系列实体类型已经存在,而 C# 不支持多重继承,所以只能把这些代码在魔改的 Identity 实体类中粘贴几次了。

先来看看这些基本接口吧:

这些基本接口每一个都对应了一个基本功能。还有一个稍微复杂的树形数据结构接口:

然后是打包接口,主要是把基本接口打包到一个统一接口,方便批量使用:

树形数据结构也有一套:

最后还有几个特别用处的接口:

至此,基本上用到的接口就定义好了,接下来就是魔改 Identity 实体类,这里以 IdentityRole 为例,其他的可以到我的项目中查看,大同小异:

可以看到我在为 IdentityRole 添加接口实现的时候添加的是 IDomainTreeEntity 接口。在这里我把 Role 改成了树形数据类型,也就是说一个角色可以是另一个角色的子角色,构成树状关系。当然如果就当作普通的 Role 来使用也没有任何问题,这个扩展完全不会破坏任何内置功能,没有任何侵入性,按需选用就好,至于能发挥什么作用,完全看脑洞有多大 (●'◡'●)

然而,这还不是全部,不然就对不起魔改的名号了。现在看见的代码还不是最终形态。因为使用了 PropertyChanged.Fody 这个库,所有的实体都可以向外发送属性变更通知,至于能发挥什么作用,还是看脑洞。

代码最终形态预览(此处使用了 ILSpy 反编译引擎的 Nuget 包,详情见我之前的博客C# 编译器 和 反编译器,你要哪个(歪头)?我全都要(捏拳)!):

魔改部分还不止这些,但是和我接下来打算介绍的部分存在重叠,所以剩下的部分就和接下来的介绍放在一起了,会新开一篇博客。

各位观众老爷对我的魔改实体类有什么感想欢迎评论交流。可以到下方我的 Github 存储库下载项目运行体验效果。

转载请完整保留以下内容并在显眼位置标注,未经授权删除以下内容进行转载盗用的,保留追究法律责任的权利!

  本文地址:https://www.cnblogs.com/coredx/p/12310010.html

  完整源代码:https://github.com/CoreDX9/IdentityServerDemo

  里面有各种小东西,这只是其中之一,不嫌弃的话可以Star一下。

Asp.Net Core Identity 骚断腿的究极魔改实体类相关推荐

  1. ASP.NET Core Identity 实战(4)授权过程

    这篇文章我们将一起来学习 Asp.Net Core 中的(注:这样描述不准确,稍后你会明白)授权过程 前情提要 在之前的文章里,我们有提到认证和授权是两个分开的过程,而且认证过程不属于Identity ...

  2. ASP.NET Core Identity 实战(1)——Identity 初次体验

    ASP.NET Core Identity是用于构建ASP.NET Core Web应用程序的成员资格系统,包括成员资格.登录和用户数据存储 这是来自于 ASP.NET Core Identity 仓 ...

  3. ASP.NET Core Identity自定义数据库结构和完全使用Dapper而非EntityFramework Core

    前言 原本本节内容是不存在的,出于有几个人问到了我:我想使用ASP.NET Core Identity,但是我又不想使用默认生成的数据库表,想自定义一套,我想要使用ASP.NE Core Identi ...

  4. ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程

    ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 原文:ASP.NET Core Identity 迁移数据 - ASP.NET C ...

  5. IdentityServer4【QuickStart】之使用asp.net core Identity

    使用asp.net core Identity IdentityServer灵活的设计中有一部分是可以将你的用户和他们的数据保存到数据库中的.如果你以一个新的用户数据库开始,那么,asp.net co ...

  6. ASP.NET Core Identity 实战(3)认证过程

    如果你没接触过旧版Asp.Net Mvc中的 Authorize 或者 Cookie登陆,那么你一定会疑惑 认证这个名词,这太正式了,这到底代表这什么? 获取资源之前得先过两道关卡Authentica ...

  7. ASP.NET Core Identity Hands On(2)——注册、登录、Claim

    上一篇文章(ASP.NET Core Identity Hands On(1)--Identity 初次体验)中,我们初识了Identity,并且详细分析了AspNetUsers用户存储表,这篇我们将 ...

  8. 主攻ASP.NET.4.5 MVC4.0之重生:Entity Framework生成实体类步骤(十三)

    1.新建一个ASP.NET MVC 4.0 项目 2.安装Entity Framework Power Tools 3.Entity Framework- -RepositoryReverse Eng ...

  9. asp.net core系列 47 Identity 自定义用户数据

    一.概述 接着上篇的WebAppIdentityDemo项目,将自定义用户数据添加到Identity DB,自定义扩展的用户数据类应继承IdentityUser类, 文件名为Areas / Ident ...

最新文章

  1. eclipse使用git合并_Eclipse中使用git
  2. python处理excel-python对Excel的读取
  3. Redhat7.2上编译Linux内核源码
  4. UA MATH571A 多元线性回归II 变量选择
  5. nginx之rtmp模块引用计数设计
  6. php 数组降维,php 数组去重的方法参考(一维数组去重、二维数组去重)
  7. oracle视图查询数据慢,8i查询DBA_FREE_SPACE视图极慢的问题
  8. twisted系列教程十七–用inlineCallbacks来管理callbacks
  9. mvn clean install时出现 java.lang.ClassCastException
  10. Lazarus Coolbar and AnchroDocking
  11. 分布式共识算法——Gossip协议(图解)
  12. kali翻译插件_Kali2.0上的一款翻译神器【GoldenDict神器介绍】
  13. 中科大自主招生计算机,中科大自主招生(中科大自主招生试题)
  14. sock 中的send和recv
  15. np.eye()和np.identity()
  16. 使用LumaQQ来开发QQ机器人
  17. BIM模型文件下载——某加油站服务区Revit模型
  18. Maven下载 安装和配置,以及阿里远程仓库的配置
  19. 【深度学习】02-04-类神经网络训练不起来怎么办?(自动调整学习速率)-李宏毅老师2122深度学习课程笔记
  20. python代码编辑器android_三款可以在安卓手机上运行Python代码的软件

热门文章

  1. Android中常用到的权限
  2. SVN的VS.NET插件——AnkhSVN
  3. 【本人秃顶程序员】技巧分享丨spring的RestTemplate的妙用,你知道吗?
  4. User Stories - 最佳实践 (Best Practices)
  5. 开发团队测试的难与易
  6. Android插件基础之类加载器学习
  7. 部门树形结构,使用Treeview控件显示部门
  8. JAVA-MyBatis ORM
  9. 【转】卖场开设社区便利店,不仅卖货,还有家政服务、售后衔接等(图)
  10. mysql服务的启动和停止 net stop mysql net start mysql