ef 数据迁移mysql_IdentityServer4系列 | 支持数据持久化

本文详细介绍了如何将IdentityServer4的配置数据和操作数据使用EntityFramework(EF)迁移到MySQL数据库,包括配置数据库上下文、创建迁移、初始化数据库、处理常见问题等方面,确保数据在生产环境中的持久化。
摘要由CSDN通过智能技术生成

一、前言

在前面的篇章介绍中,一些基础配置如API资源、客户端资源等数据以及使用过程中发放的令牌等操作数据,我们都是通过将操作数据和配置数据存储在内存中进行实现的,而在实际开发生产中,我们需要考虑如何处理数据持久化呢?

这时「IdentityServer4」具有良好的扩展性,其中一个可扩展点是用于「IdentityServer」所需数据的存储机制,进行持久化操作。

下面将如何配置「IdentityServer」以使用「EntityFramework」(EF)作为此数据的存储机制把这些数据存储到「Sql Server」数据库, 这样更符合我们实际生产环境的需求。

二、初识

在我们的 「IdentityServer4」中官方定义的两个上下文,是有两种类型的数据需要持久化到数据库中:

1、「配置数据」(资源、客户端、身份);//这里是对应配置上下文 ConfigurationDbContext

2、「IdentityServer」在使用时产生的 「操作数据」(令牌,代码和用户的授权信息consents);//这里是对应操作上下文 PersistedGrantDbContext

「这两个上下文以及对应的数据模型,已经被 IdentityServer4 官方给封装好了」, 我们不需要做额外的操作,直接进行迁移即可使用。

2.1 ConfigurationDb

ConfigurationDbContext (IdentityServer configuration data) —— 负责数据库中对客户端、资源和 CORS 设置的配置存储;

如果需要从 EF 支持的数据库加载客户端、标识资源、API 资源或 CORS 数据 (而不是使用内存中配置), 则可以使用配置存储。此支持提供 IClientStoreIResura StoreICorsPolicyService 扩展性点的实现。这些实现使用名为 ConfigurationDbContext「dbcontext」 派生类对数据库中的表进行建模。

2.2 PersistedGrantDb

PersistedGrantDbContext (IdentityServer operational data.) -—— 负责存储同意、授权代码、刷新令牌和引用令牌;

如果需要从 EF 支持的数据库 (而不是默认的内存数据库) 加载授权授予、同意和令牌 (刷新和引用), 则可以使用操作存储。此支持提供了 IPersistedGrantStore 扩展点的实现。实现使用名为 PersistedGrantDbContext「dbcontext」 派生类对数据库中的表进行建模。

三、实践

3.1 新建站点

建立一个MVC的Asp.Net Core项目 ,使用MVC模板

3.2 Nuget包

IdentityServer4.EntityFramework以及EF相关包

1.IdentityServer4
2.IdentityServer4.AspNetIdentity
3.IdentityServer4.EntityFramework

因为本文中使用的是SqlServer数据库,所以需要安装对应的EF程序包对数据库的支持。

Microsoft.EntityFrameworkCore.SqlSe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值