gpt4 book ai didi

asp.net - asp.net core 2.0 中的机器 key ?

转载 作者:行者123 更新时间:2023-12-04 02:18:16 25 4
gpt4 key购买 nike

我在 2 个不同的服务器上运行相同的 asp.net core 2 应用程序,但使用相同的数据库来存储用户等。

问题是,如果我在一台服务器上创建并设置用户密码,运行相同应用程序的另一台服务器会返回无效密码,反之亦然。

几年前我在一个 asp.net 4 应用程序中遇到了这个问题,我通过为两个应用程序设置相同的机器 key 来解决它。

我听说过数据保护 api,但我找不到在哪里告诉它使用相同的加密 key ,相反,我发现复杂的例子让我感到困惑,我需要的只是让两台服务器理解彼此的加密。

最佳答案

您可以将一台服务器作为主要服务器,将一台作为辅助服务器。在辅助服务器中禁用自动 key 生成

using Microsoft.AspNetCore.DataProtection;

public void ConfigureServices(IServiceCollection services)
{
services.AddDataProtection().DisableAutomaticKeyGeneration();
}
或者你可以将它们持久化到 Redis
public void ConfigureServices(IServiceCollection services)
{
// sad but a giant hack :(
// https://github.com/StackExchange/StackExchange.Redis/issues/410#issuecomment-220829614
var redisHost = Configuration.GetValue<string>("Redis:Host");
var redisPort = Configuration.GetValue<int>("Redis:Port");
var redisIpAddress = Dns.GetHostEntryAsync(redisHost).Result.AddressList.Last();
var redis = ConnectionMultiplexer.Connect($"{redisIpAddress}:{redisPort}");

services.AddDataProtection().PersistKeysToRedis(redis, "DataProtection-Keys");
services.AddOptions();

// ...
}
详细的文章可在同一
http://www.tugberkugurlu.com/archive/asp-net-core-authentication-in-a-load-balanced-environment-with-haproxy-and-redis
PS:上面贴出的代码来自同一篇文章,所以如果链接掉了,答案仍然完整

关于asp.net - asp.net core 2.0 中的机器 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46860603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com