为什么要指定加密的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的加密密钥,要注意保管和定期更换。