在 Startup.cs 的 ConfigureServices() 方法中添加 services.AddDataProtection(); 之后,Data Protection Key默认会保持在运行当前站点的用户profile文件夹中。
info: Microsoft.Extensions.DependencyInjection.DataProtectionServices[0] User profile is available. Using '/root/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest.
请问如何保存在redis中以让多台服务器共享?
aspnet/DataProtection 已经有了redis的实现,使用方法如下:
var redisSection = Configuration.GetSection("redis"); var conf = redisSection.GetValue<string>("Configuration"); var redis = ConnectionMultiplexer.Connect(conf); services.AddDataProtection().PersistKeysToRedis(redis, "DataProtection-Keys");
我基于 Microsoft.Extensions.Caching.Distributed 中的 IDistributedCache 实现了一个 DistributedStoreXmlRepository,使用方法如下:
var redisSection = Configuration.GetSection("redis"); services.AddDistributedRedisCache(options => redisSection.Bind(options)); services.AddDataProtection().PersistKeysToDistributedStore();
最终通过 DataProtection.DistributedStore 与 ServiceStackRedisCache 实现的。
Microsoft.AspNetCore.DataProtection.Redis