迁移asp.net核心标识以使用SQL数据库的数据保护



我有一个asp.net核心3.1 MVC应用程序,我一直在使用asp.net核心标识。现在,我创建了一个API,它共享相同的源代码,包括身份服务,还创建用户并发送一封带有待确认的注册令牌的电子邮件。从注册链接,用户被重定向到MVC应用程序以完成注册。但在注册过程中,令牌总是无效的。

从阅读其他问题中,我看到了添加微软。AspNetCore。DataProtection包,配置启动类services.AddDataProtection().PersistKeysToDbContext<MyDbContext>();,并创建迁移,将使两个应用程序共享相同的"实例;机器钥匙";。

配置很简单,我添加了它,但在我看来,我需要在其他密钥中添加一些密钥,才能使身份再次工作。添加数据保护后,我的应用程序停止工作,并出现以下错误,似乎它确实错过了DataProtection创建的表中的一些配置。知道我在这里错过了什么吗?我从未创建过Machine密钥,所以有点迷路了。:/

处理请求时发生未处理的异常。ArgumentNullException:值不能为null。(参数"source"(微软EntityFrameworkCore。公用事业检查NotNull(T值,字符串参数名称(CryptographicException:尝试加密提供的数据时出错。有关详细信息,请参阅内部异常
微软。AspNetCore。数据保护。密钥管理。KeyRingBasedDataProtector。保护(byte[]明文(系统ArgumentNullException:值不能为null。(参数"source"(在微软。EntityFrameworkCore。公用事业检查NotNull[T](T值,String parameterName(在微软。EntityFrameworkCore。EntityFrameworkQueryableExtensions。AsNoTracking[TEntity](IQueryable `1源(在微软。AspNetCore。数据保护。EntityFrameworkCore。EntityFrameworkCoreXmlRepository`1.GetAllElements((在微软。AspNetCore。数据保护。密钥管理。XmlKeyManager。GetAllKeys((在微软。AspNetCore。数据保护。密钥管理。KeyRingProvider。CreateCacheableKeyRingCore(DateTimeOffset现在,IKey keyJustAdded(在微软。AspNetCore。数据保护。密钥管理。KeyRingProvider。微软AspNetCore。数据保护。密钥管理。内部的ICacheableKeyRingProvider。GetCacheableKeyRing(现在为DateTimeOffset(在微软。AspNetCore。数据保护。密钥管理。KeyRingProvider。GetCurrentKeyRingCore(DateTime utcNow,布尔强制刷新(在微软。AspNetCore。数据保护。密钥管理。KeyRingProvider。GetCurrentKeyRing((在微软。AspNetCore。数据保护。密钥管理。KeyRingBasedDataProtector。Protect(Byte[]明文(

我想,我错过了添加我的DbCOntext中DataProtectionKeys的属性。公共

DbSet<DataProtectionKey> DataProtectionKeys { get; set; }

最新更新