当前位置: 首页 > news >正文

界面 网站网络服务代码1001

界面 网站,网络服务代码1001,云南网页设计与制作,中山 网站建设开发上几篇#xff0c;我们创建了客户端#xff0c;scope#xff0c;启动时#xff0c;IdentityServer把这些配置数据加载至内存#xff0c;但是#xff0c;如果我们想要更改配置#xff0c;就必须停掉IdentityServer#xff0c;然后重新启动。且IdentityServe在r运行过程中… 上几篇我们创建了客户端scope启动时IdentityServer把这些配置数据加载至内存但是如果我们想要更改配置就必须停掉IdentityServer然后重新启动。且IdentityServe在r运行过程中还会生成临时数据如授权码、是否同意的按钮选择、以及refresh token。默认情况下这些也存储在内存中。将以上这些数据存储在数据库中进行数据持久化方便重启跨多个IdentityServer实例这个持久化我们可以使用IdentityServer4 Entity Framework除了手动配置EF支持之外还有一个IdentityServer模板可以使用dotnet new is4ef创建一个支持EF的新项目。IdentityServer4.EntityFrameworknuget包实现了所需的存储和服务主要使用以下两个DbContexts:ConfigurationDbContext - 作用于注册数据如客户端资源scope等等PersistedGrantDbContext - 作用于临时操作数据如授权码refresh tokens这些context适用于任何ef core兼容的关系型数据库sqlservermysql。可以在IdentityServer4.EntityFramework.Storage包中找到contextentitiesIdentityServer4 storesIdentityServer4.EntityFramework包括了注册的扩展方法且包括了IdentityServer4.EntityFramework.Storage1.添加nuget引用cd .\IdentityServer\ dotnet add package IdentityServer4.EntityFramework 2.添加对mysql的支持dotnet add package MySql.Data.EntityFrameworkCore 3.数据迁移IdentityServer4.EntityFramework.Storage包存在包含映射自IdentityServer模型的实体类随着IdentityServer的模型的更改IdentityServer4.EntityFramework.Storage中的实体类也将更改所以需要使用者随着时间的推移升级使用这个包这个过程需要负责在数据库架构以及在实体类更改时对该数据库架构进行必要的更改。最好的方式就是使用EF数据迁移(EF migrations)这里官方只提供了针对sqlserver的sql脚本可以看一下做个了解。4.重新配置存储在Startup.csusing Microsoft.EntityFrameworkCore; using System.Reflection; //这里用到了反射var migrationsAssembly  typeof(Startup).GetTypeInfo().Assembly.GetName().Name;//3308为宿主机端口映射docker mysql容器默认端口3306 const string connectionString  Persist Security InfoFalse;databaseIdentityServer4;serverlocalhost;port3308;Connect Timeout30;user idroot; pwd123456;services.AddIdentityServer().AddTestUsers(TestUsers.Users).AddConfigurationStore(options {options.ConfigureDbContext  b  b.UseMySQL(connectionString,sql  sql.MigrationsAssembly(migrationsAssembly));}).AddOperationalStore(options {options.ConfigureDbContext  b  b.UseMySQL(connectionString,sql  sql.MigrationsAssembly(migrationsAssembly));}); 因为我们在IdentityServer.csproj中使用EF迁移所以通过对MigrationsAssembly的调用来告诉Entity Framework 的宿主项目(IdentityServer.csproj)将包含迁移代码the migrations code。这是必要的因为宿主项目(IdentityServer.csproj)与包含DbContext类的项目两者是位于不同的程序集中(IdentityServer4.EntityFramework.Storage)。5.创建迁移一旦将IdentityServer配置为使用 Entity Framework Core我们将需要生成一些迁移-migrations。Entity Framework Core CLIMicrosoft.EntityFrameworkCore.Design nuget包#安装ef core 工具 dotnet tool install --global dotnet-ef dotnet add package Microsoft.EntityFrameworkCore.Design#cd到IdentityServer项目目录 dotnet ef migrations add InitialIdentityServerPersistedGrantDbMigration -c PersistedGrantDbContext -o Data/Migrations/IdentityServer/PersistedGrantDbdotnet ef migrations add InitialIdentityServerConfigurationDbMigration -c ConfigurationDbContext -o Data/Migrations/IdentityServer/ConfigurationDb 温故而知新还记得在VS的Package Manager Console是如何执行命令创建迁移的吗#第一步Add-Migration InitialCreate#第二步Update-Database 6.初始化数据库现在我们已经完成了迁移我们可以编写代码从迁移-migrations创建数据库。我们还可以使用在前面的quickstart中定义的内存配置数据来为数据库初始化种子当然这个seed最好只是在调试环境下执行。官方提示在这个快速入门中使用的方法主要是使IdentityServer更容易启动和运行。您应该设计适合自己体系结构的数据库创建和维护策略。在Startup.cs中增加下面的初始化方法:using System.Linq; using IdentityServer4.EntityFramework.DbContexts; using IdentityServer4.EntityFramework.Mappers;private void InitializeDatabase(IApplicationBuilder app) {using (var serviceScope  app.ApplicationServices.GetServiceIServiceScopeFactory().CreateScope()){serviceScope.ServiceProvider.GetRequiredServicePersistedGrantDbContext().Database.Migrate();var context  serviceScope.ServiceProvider.GetRequiredServiceConfigurationDbContext();context.Database.Migrate();if (!context.Clients.Any()){foreach (var client in Config.Clients){context.Clients.Add(client.ToEntity());}context.SaveChanges();}if (!context.IdentityResources.Any()){foreach (var resource in Config.IdentityResources){context.IdentityResources.Add(resource.ToEntity());}context.SaveChanges();}if (!context.ApiResources.Any()){foreach (var resource in Config.Apis){context.ApiResources.Add(resource.ToEntity());}context.SaveChanges();}} }public void Configure(IApplicationBuilder app) {// this will do the initial DB populationInitializeDatabase(app);// the rest of the code that was already here// ... } 上面的InitializeDatabase方法可以方便地 seed the database但是这种方法在每次运行应用程序时都留进去执行并不理想。一旦填充数据库初始化数据之后就可以考虑删除对其之调用。7.运行客户端应用这个就简略些上个命令即可cd src\IdentityServer dotnet run 长按二维码关注点外卖先领券
http://wiki.neutronadmin.com/news/411704/

相关文章:

  • 网站平台运营方案网站开发取名
  • 自问自答网站怎么做seo官网优化怎么做
  • 网站同时使用asp php重庆宣网站建设
  • 网站上面如何加入视频静态网页设计源代码
  • 谷歌怎么做网站推广仿网站制作教学视频
  • 国内产品网站1688新媒体运营培训
  • 一般建设一个网站多少钱国外做装修设计网站
  • 微信公号嵌入网站开发企业管理培训课程有哪些内容
  • 地产网站规划wordpress首页设置成文章还是页面
  • 人事代理网站建设专门做网站网站犯法吗
  • 衡水建设公司网站互联网开发工程师证书
  • 网站建设需求wordpress 大学网站
  • 游戏网站开发推广计划书傻瓜式php网站开发
  • 重庆建设信息工程信息网路由优化大师官网
  • 网站管理系统后台不能发布文章了对建设工程施工合同实施过程中
  • 福田欧曼服务站做外贸的网站域名怎么买
  • 如何办网站天元建设集团有限公司第八分公司
  • 北京网站建设策划方案关于网站建设的名言
  • 网站运营方案案例如何修改wordpress站名
  • 网站建设平台协议书模板下载网站的建站过程
  • 网站开发公司模版郑州公司网站制作
  • 东莞做营销型网站的松江专业做网站
  • 如何选择扬中网站建设网页制作软件大全
  • 集团网站设计特性个人免费设计网站
  • 如何能去医疗网站做编辑温州商城网站建设
  • 广州公司制作网站0735郴州网
  • 太原模板建站典型十大优秀网络营销案例
  • 专业餐饮网站建设企业网站的设计怎么做
  • 东莞网站建设(曼哈顿信科)中国建设网官方
  • 四川省住房和城乡建设厅网站首页wordpress阿里云数据库