Dotnet
为什么要指定加密的Key?
使用nginx做负载均衡时,一个入口多个下游服务,
如果下游服务使用cookie进行验证,那么在A服务登录获得的cookie,在B服务是不能使用的,因为系统的加密Key不一样
那要怎么处理?
将多服务指定一个一致的Key。
怎么做?
创建个文件夹 Keys,下面会用到
配置startup.cs
public void ConfigureServices(IServiceCollection services)
{
var keysFolder = Path.Combine(env.ContentRootPath, "Keys");
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(keysFolder)) // 这里指定Key所在的文件夹
.SetApplicationName("XXXXX");
//.DisableAutomaticKeyGeneration(); // 注意这里,第一次,或者是想换Key的时候,将这一行注释掉
}
运行后,将在Keys文件夹中生成一个Key文件,如下图
接着,将上面的DisableAutomaticKeyGeneration的注释去掉,表示不再自动生成Key
最后,系统将使用Keys里的做为Cookie的加密密钥,要注意保管和定期更换。