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一下。
總結
以上是生活随笔為你收集整理的Asp.Net Core Identity 骚断腿的究极魔改实体类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大白技术控 | Windows10X 模
- 下一篇: ASP.NET 开源导入导出库Magic