У меня есть два DBContext в моем приложении веб-API.Во-первых, у всех моих клиентов должна быть соответствующая строка, а во-вторых, это реальная база данных приложения.
Контроллер входа использует MyClientContext, а все остальные контроллеры используют MyContext
Мой startup.cs
выглядит
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
services.AddDbContext<MyContext>(options =>
options.UseNpgsql(Configuration.GetConnectionString("MyContext")));
services.AddDbContext<MyClientContext>(options =>
options.UseNpgsql(Configuration.GetConnectionString("MyClientContext")));
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
using (var serviceScope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
var context = serviceScope.ServiceProvider.GetRequiredService<MyContext>();
context.Database.Migrate(); // Code First Migrations for App DB
var context2 = serviceScope.ServiceProvider.GetRequiredService<MyClientContext>();
context2.Database.Migrate(); // Code First Migrations for Clients DB
}
app.UseCors("AllowSpecificOrigin");
app.UseAuthentication();
app.UseHttpsRedirection();
app.UseMvc();
}
При успешном входе в систему я выдаю токен JWT, который выглядит как
private string GenerateJSONWebToken(UserAuth userInfo)
{
var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Jwt:Key"]));
var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
var claims = new[] {
new Claim(JwtRegisteredClaimNames.Sub, userInfo.UserName),
new Claim(JwtRegisteredClaimNames.Email, userInfo.Email),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
};
var token = new JwtSecurityToken(_config["Jwt:Issuer"], _config["Jwt:Issuer"], claims,
expires: DateTime.Now.AddHours(24), signingCredentials: credentials);
return new JwtSecurityTokenHandler().WriteToken(token);
}
Здесь я назначил ConnectionString для реальной БД в файле запуска.Я хочу назначить это, когда пользователь входит в систему. Как мне добиться этого?