IGeekFan.AspNetCore.DataProtection.FreeRedis
将 ASP.NET Core Data Protection 密钥存入 Redis。
功能概览
| 功能 | 说明 |
|---|---|
| 密钥存储 | Data Protection 密钥存入 Redis |
| 多实例共享 | 跨实例共享认证 Cookie |
| 弹性扩缩 | 容器环境下的密钥同步 |
安装
dotnet add package IGeekFan.AspNetCore.DataProtection.FreeRedis
快速开始
场景:多实例部署
1. 配置 Redis
{
"ConnectionStrings": {
"Redis": "127.0.0.1:6379,password=***,defaultDatabase=0"
}
}
2. 注册服务
using FreeRedis;
using Microsoft.AspNetCore.DataProtection;
var builder = WebApplication.CreateBuilder(args);
var redis = new RedisClient(builder.Configuration.GetConnectionString("Redis"));
builder.Services
.AddDataProtection()
.SetApplicationName("MyApp")
.PersistKeysToFreeRedis(redis, "DataProtection-Keys");
var app = builder.Build();
app.Run();
场景:Redis 集群
var builder = WebApplication.CreateBuilder(args);
var redis = new RedisClient(new RedisConnectionString
{
Host = "redis-cluster.example.com",
Port = 6379,
Password = "your-password",
DefaultDatabase = 0,
Ssl = true
});
builder.Services
.AddDataProtection()
.SetApplicationName("MyApp")
.PersistKeysToFreeRedis(redis, "DataProtection-Keys");
高级配置
自定义密钥过期
builder.Services
.AddDataProtection()
.SetApplicationName("MyApp")
.SetDefaultKeyLifetime(TimeSpan.FromDays(90))
.PersistKeysToFreeRedis(redis, "DataProtection-Keys");
多应用隔离
// 应用 A
builder.Services
.AddDataProtection()
.SetApplicationName("AppA")
.PersistKeysToFreeRedis(redis, "DataProtection-Keys-AppA");
// 应用 B
builder.Services
.AddDataProtection()
.SetApplicationName("AppB")
.PersistKeysToFreeRedis(redis, "DataProtection-Keys-AppB");
密钥轮换
builder.Services
.AddDataProtection()
.SetApplicationName("MyApp")
.SetDefaultKeyLifetime(TimeSpan.FromDays(30))
.PersistKeysToFreeRedis(redis, "DataProtection-Keys")
.SetLifecycle(new DataProtectionKeyRingLifetime());
运维建议
| 建议 | 说明 |
|---|---|
| 一致性 | SetApplicationName 在同一集群保持一致 |
| 高可用 | Redis 启用持久化与高可用 |
| 安全 | 生产环境启用 TLS |
| 备份 | 定期备份 Redis 数据 |
| 监控 | 监控 Redis 内存和连接数 |
故障排查
| 问题 | 解决方案 |
|---|---|
| 连接失败 | 检查 Redis 连接字符串 |
| 认证失败 | 检查 Redis 密码 |
| 密钥丢失 | 检查 Redis 持久化配置 |
| 性能问题 | 检查 Redis 内存和连接数 |
相关文档
- DataProtection.FreeSql - 数据库存储方案
- SignalR.FreeRedis - 实时消息广播
- Core - 基础包
- 包能力矩阵