Каков наилучший способ совместного использования объекта конфигурации между классом запуска ASP. NET Core 3.1 и контроллерами?
Я видел несколько примеров использования DI, и это кажется хорошей идеей , но мне нужно использовать зависимость внутри public void ConfigureServices(IServiceCollection services)
.
Кроме того, объект зависит от Microsoft.Extensions.Configuration.IConfiguration
экземпляра.
Объект будет использоваться в Startup.cs
, в пределах сам по себе ConfigureServices
, а также в Controllers
.
Будет ли работать DI? Или это решение Singleton с параметрами?
Вот конкретный c код, который необходимо передать:
// openssl rand -hex 16 => 256 bits when read
var jwt_key = Configuration.GetSection("JwtOption:IssuerSigningKey").Value;
var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(jwt_key));
var tokenValidationParameters = new TokenValidationParameters
{
// The signing key must match!
ValidateIssuerSigningKey = true,
IssuerSigningKey = signingKey,
// Validate the JWT Issuer (iss) claim
ValidateIssuer = true,
ValidIssuer = "some host name",
// Validate the JWT Audience (aud) claim
ValidateAudience = true,
ValidAudience = "web_intranet",
// Validate the token expiry
ValidateLifetime = true,
// If you want to allow a certain amount of clock drift, set that here:
ClockSkew = TimeSpan.Zero
};
Этот объект используется следующим образом в методе public void ConfigureServices(IServiceCollection services)
services
.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options =>
{
options.TicketDataFormat = new CustomJwtDataFormat(
SecurityAlgorithms.HmacSha256,
tokenValidationParameters);
});