芦苞建网站公司scrm企业微信管理系统
news/
2025/10/9 12:50:59/
文章来源:
芦苞建网站公司,scrm企业微信管理系统,网站建设的需求方案,cms网站管理系统前言原计划打算在春节期间多分享几篇技术文章的#xff0c;但到最后一篇也没出#xff0c;偷懒了吗#xff1f;算是吧#xff0c;过程是这样的#xff1a;每次拿出电脑#xff0c;在孩姥姥家的院子总有阳光沐浴#xff0c;看不清屏幕#xff0c;回屋又有点冷(在强行找理… 前言原计划打算在春节期间多分享几篇技术文章的但到最后一篇也没出偷懒了吗算是吧过程是这样的每次拿出电脑在孩姥姥家的院子总有阳光沐浴看不清屏幕回屋又有点冷(在强行找理由)于是又带着娃遛弯去啦。哪有那么多理由就是想偷个懒不过后面几天把计算机组成原理简单过了过后面整理整理再单独给小伙伴分享吧。这次接着IdentityServer4说之前一直用内存数据进行测试演示在正式项目中肯定是要存数据库的(除非数据固定用内存方式实现)接下来就用Demo实操的过程说说IdentityServer4的持久化。正文IdentityServer4已经对EF Core有很好的支持与封装用很少的代码就能实现数据持久化重点还是需要对EF Core有所了解如果还有不了解的小伙伴请先花几分钟看看之前分享的关于EF Core的文章(跟我一起学.NetCore之EF Core 实战入门一看就会)。主要需要nuget包如下IdentityServer4这个包是IdentityServer4的核心包项目中只要使用IdentityServer4就必须引入此包IdentityServer4.EntityFramework这个包是IdentityServer4针对EF进行封装的包支持使用EF进行数据的持久化Microsoft.EntityFrameworkCore.SqlServer针对不同的数据库引入不同的EF包这里使用的是微软提供的本地数据库所以引入的SqlServerMicrosoft.EntityFrameworkCore.Tools如果需要在程序的包管理控制台进行迁移操作就需要在指定程序集中安装此包Microsoft.EntityFrameworkCore.Design如果需要在命令行中进行迁移操作就需要在指定程序集中安装此包注Demo演示采用的是包管理控制台的方式进行迁移操作命令行的方式思路是一样的只是使用的命令稍微有点不同Demo走起来项目准备这里就不从头到尾敲代码啦把上一节Authorization Code的代码拷贝过来重点还是关注持久化的过程(这个理由棒棒哒)。源码地址https://github.com/zyq025/IDS4Demo/tree/main/AuthorizationCode。开始撸码先把包都引入到程序中如下图然后在Startup.cs文件中将原来的内存模式改为从数据库中读取即可其实最关键的就是IdentityServer4封装好的两个上下文ConfigurationDbContext这个上下文主要是针对配置数据比如客户端(Client)、资源(Resources)等PersistedGrantDbContext这个上下文主要是针对用户授权操作时的数据和临时数据比如同意授权的数据、Token等在代码中只需要针对这这两个上下文指定数据库就行啦如果没有什么自定义需求不用其他配置如下迁移就完事啦代码撸完啦剩下的就是EF迁移的几步走就完事啦(这里演示用的包管理控制台)注如果程序中有多个上下文如果不指定上下文迁移会报错因为程序不知要迁移哪个。新增迁移指定ConfigurationDbContext指定PersistedGrantDbContext参数简要说明-Context 指定上下文进行迁移-OutputDir迁移生成的文件存放路径最后迁移的文件结果如下根据迁移文件同步到数据库中先同步ConfigurationDbContext这时候对应的数据库就生成了而且对应配置相关的表已经在数据库创建再同步PersistedGrantDbContext这个表少就两张其实这样就已经可以啦只要在数据库对应的表中添加对应的数据就能进行操作啦 那新手小伙伴肯定得苦恼啦这么多表咋知道哪个表存啥数据啊不急咱们把原来内存中的数据存进去然后再看看每个表存了啥这不就更加明了啦比一个一个表说的还直接这种方式还能促使小伙伴动手不然都不知道里面存了啥(哈哈哈高招)。那就多出来第四步如下……4. 加个种子数据美美哒这里说的种子数据就是指原来在内存中数据把它们读出来存到数据库中就行很简单通过上文直接存即可代码如下方法写好啦直接在Configure中调用即可如下这样就完工啦把授权服务器、资源服务器、客户端都启动走一遍流程看看是不是成功啦不出意外一切顺利这时再返过来看看每个表中都存啥数据就真的很清晰啦。这里就不一一截图说相信小伙伴都能搞得明白。到这肯定有小伙伴要说话啦用户那还是用的内存之所以没放到上面一起说那是因为用户这块的控制权完全在我们自己手里可以自己设计(就是用户、菜单、角色那一套)也可以集成微软封装好的Identity(把常用的用户那一套已经封装啦)。这里演示肯定挑着爽的玩就集成微软封装好的Identity来继续撸码引入相关nuget包引入的包简单说明IdentityServer4.AspNetIdentityIdentityServer4对微软封装的Indentity的支持Microsoft.AspNetCore.Identity.EntityFrameworkCore对Identity提供EF支持撸码就对了因为IdentityDbContext是抽象类不能直接使用这里需要针对IdentityDbContext定义一个子类ApplicationDbContext如下然后在Startup.cs中注册相关服务即可迁移及同步这里没有指定输出路径小伙伴根据自己的需要进行指定。数据库中生成相关的表如下更改登录和登出逻辑登出的时调用 _signInManager.SignOutAsync();即可加点种子数据即程序启动时加入用户数据方法写好同样在Configure中调用即可种子数据准备好之后就可以用Zoe用户进行登录啦密码就是Zoe123456这里就不专门针对微软封装的Identity说的那么细啦小伙伴可以参考文档https://docs.microsoft.com/zh-cn/aspnet/identity/overview/getting-started/introduction-to-aspnet-identity。总结IdentityServer4的入门暂时先到这篇吧后续会在实战项目中进行使用分享。下一节先来说说服务发现。一个被程序搞丑的帅小伙关注Code综艺圈跟我一起学~
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/932557.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!