根据jwt声明动态更改数据库连接



我想根据当前客户端动态更改数据库连接。每个客户的JWT中都有一个带有数据库字符串的Claim。在我的Program.cs中,我用以下行创建数据库连接:

builder.Services.AddDbContext<My_Context>(x => x.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

现在我正试图取代";DefaultConnection";与个人索赔。是否有可能在Program.cs文件中获取索赔?

您可以获得声明并动态创建连接字符串,如下所示:

builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
builder.Services.AddDbContext<My_Context>((serviceProvider, dbContextBuilder) =>
{
var httpContextAccessor = serviceProvider.GetRequiredService<IHttpContextAccessor>();
// get required claim 
var allClaims = httpContextAccessor.HttpContext.User.Claims;
// filter whatever you need and build connectionstring based on claim
var connectionString = getconnectionstring();
dbContextBuilder.UseSqlServer(connectionString);
});

最新更新