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

前言

       默认的 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一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311794.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[蓝桥杯2015决赛]四阶幻方

题目描述 把1~16的数字填入4x4的方格中,使得行、列以及两个对角线的和都相等,满足这样的特征时称为:四阶幻方。 四阶幻方可能有很多方案。如果固定左上角为1,请计算一共有多少种方案。 比如: 1 2 15 16 12 14 3 5 13 7…

数据结构---模式匹配

数据结构—模式匹配 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define N 100 int next[N]; void getNext(char *T,int *next,int m) {//求解当前字符前面的最大公共前缀和后缀int j 1,k0;next[j] 0;//从1开始…

CKEditor 4编辑器已与Vue.js集成

虽然 CKEditor 4 不是目前主要维护的分支&#xff0c;不过官方并没有让它落后于潮流。近日&#xff0c;CKEditor 团队发布了与 Vue.js 框架原生集成的 CKEditor 4。这就意味着&#xff0c;开发者可以通过<ckeditor />标签以 Vue.js 组件的形式使用 CKEditor 4 &#xff0…

python获取文件夹下文件_Python 获取目录下的文件列表与内容

下面的python例子是列举用户目录下面的文件 import os import sys #infoos.getcwd() #listfileos.listdir(os.getcwd()) inforaw_input("请输入要列举文件的目录&#xff1a;(如D:\\temp)") listfileos.listdir(info) filenameopen(infofile.txt,w) print listfile #…

[蓝桥杯2016初赛]卡片换位-bfs

题目描述 你玩过华容道的游戏吗&#xff1f;这是个类似的&#xff0c;但更简单的游戏。看下面 3 x 2 的格子 在其中放5张牌&#xff0c;其中A代表关羽&#xff0c;B代表张飞&#xff0c;* 代表士兵。还有一个格子是空着的。 你可以把一张牌移动到相邻的空格中去(对角不算相邻…

数据结构---KMP模式匹配病毒感染人的DNA检测

数据结构—KMP模式匹配病毒感染人的DNA检测 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define N 100 int next[N]; void getNext(char *T, int *next, int m) {//求解当前字符前面的最大公共前缀和后缀int j …

推荐一个很棒的开源工作流elsa-core

开源项目orchard主要开发人员Sipke Schoorstra 开源了一个netcore 工作流项目&#xff0c;地址&#xff1a;https://github.com/elsa-workflows/elsa-core&#xff0c;最新版本1.2&#xff0c;正在开发2.0版本 。Spike 是参照Orchard Core的工作流引擎的原理&#xff0c;将其转…

python如何引用txt_如何使用pip requirements.txt文件安装python模块附加组件

pip requirements.txt documentation表示可以使用类似的线安装附加功能 MyPackage3.0 [PDF] 所以在我的requirements.txt文件中,我有一行内容如下&#xff1a; requests2.9.1 [security] 但是,当我运行命令时,不是为请求模块安装安全附加功能&#xff1a; pip install -r requi…

dfs中return回溯问题

题目&#xff1a; 从1到n中选k个数进行排列 首先我们看这段代码&#xff1a; #include <iostream> using namespace std; int n, k; const int N 1010; int a[N]; bool st[N];void dfs(int u) {if (u k 1) {for (int i 1; i < k; i) {cout << a[i] <&l…

WTM系列视频教程:MVVM

WTM系列视频教程第三章&#xff1a;MVVM文字摘要&#xff1a;“要讲MVVM模式&#xff0c;我们先来讲一下传统的MVC模式&#xff0c;要讲MVC模式&#xff0c;我们先来讲一下没有模式。。。”“为了演示没有模式&#xff0c;咱们整个项目就保留一个Program.cs文件&#xff0c;不使…

word List 22

word List 22 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

[蓝桥杯]波动数列

题目描述 观察这个数列&#xff1a;1 3 0 2 -1 1 -2 …这个数列中后一项总是比前一项增加2或者减少3。 栋栋对这种数列很好奇&#xff0c;他想知道长度为 n 和为 s 而且后一项总是比前一项增加a或者减少b的整数数列可能有多少种呢&#xff1f; 输入 输入的第一行包含四个整数 n…

ASP.NET 开源导入导出库Magicodes.IE Docker中使用

更新历史2019.02.13【Nuget】版本更新到2.0.2【导入】修复单列导入的Bug&#xff0c;单元测试“OneColumnImporter_Test”。问题见&#xff08;https://github.com/dotnetcore/Magicodes.IE/issues/35&#xff09;。【导出】修复导出HTML、Pdf、Word时&#xff0c;模板在某些情…

python爬取评论_python 爬取马蜂窝景点翻页文字评论的实现

使用Chrome、python3.7、requests库和VSCode进行爬取马蜂窝黄鹤楼的文字评论(http://www.mafengwo.cn/poi/5426285.html)。 首先&#xff0c;我们复制一段评论&#xff0c;查看网页源代码&#xff0c;按CtrlF查找&#xff0c;发现没有找到评论&#xff0c;说明评论内容不在http…

[蓝桥杯]最大连续子序列和

对于一个给定的长度为N的整数序列A&#xff0c;它的“子序列”的定义是&#xff1a;A中非空的一段连续的元素&#xff08;整数&#xff09;。你要完成的任务是&#xff0c;在所有可能的子序列中&#xff0c;找到一个子序列&#xff0c;该子序列中所有元素的和是最大的&#xff…

一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具

一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具IntroDbTool 是一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具&#xff0c;原本是基于 dotnet framework WinForm 实现的&#xff0c;在 1.1.0 版本更新中使用 dotnet core 3.1 基于 WPF 重写了&#xff0c;并实现…

python os模块详细_python之os模块详解

importos#os.getcwd() 获取当前工作目录&#xff0c;即当前python脚本工作的目录路径#print(os.getcwd()) # G:\python二期\一月\day18 #os.curdir 返回当前目录: (.) current#os.pardir 获取当前目录的父目录字符串名&#xff1a;(..)#print(os.listdir(rG:\python二期\一月\d…

高级数据结构---并查集

高级数据结构—并查集 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define N 100 int father[N]; int find(int x) {//寻找共同祖先if (x ! father[x]) {father[x] find(father[x]);}return father[x];//找到了…

m个苹果放入n个盘子问题

题目&#xff1a; 把M个同样的苹果放在N个同样的盘子里&#xff0c;允许有的盘子空着不放&#xff0c;问共有多少种不同的分法&#xff1f;&#xff08;用K表示&#xff09;5&#xff0c;1&#xff0c;1和1&#xff0c;5&#xff0c;1 是同一种分法。 输入 每个用例包含二个整…

用python处理excel的基本语法_《使用python3读取处理excel表的数据内容如何对内容求平均值》 用python读取excel文件...

使用python3读取处理excel表的数据内容如何对内容求平均值 先说下概述&#xff1a; 平就合平均数的值。 (a1 a2 ……an)/na1&#xff0c;a2&#xff0c;……&#xff0c;an的平均值。 简单算均数。么一组数字10、20、30、40、50 那么它们的算术平均值是&#xff08;10 20 30 40…