Small refactoring of the helper methods

This commit is contained in:
David Fowler 2023-05-07 22:34:58 -07:00 committed by Reuben Bond
parent 8c2ca8dbd9
commit 0a07aea4ff
2 changed files with 24 additions and 30 deletions

View File

@ -2,21 +2,21 @@
// Refer to https://github.com/dotnet-architecture/eShopOnContainers/issues/1391 // Refer to https://github.com/dotnet-architecture/eShopOnContainers/issues/1391
internal static class Extensions internal static class Extensions
{ {
public static void AddHealthChecks(this WebApplicationBuilder builder) public static void AddHealthChecks(this IServiceCollection services, IConfiguration configuration)
{ {
builder.Services.AddHealthChecks() services.AddHealthChecks()
.AddUrlGroup(_ => new Uri(builder.Configuration["IdentityUrlHC"]), name: "identityapi-check", tags: new string[] { "identityapi" }); .AddUrlGroup(_ => new Uri(configuration["IdentityUrlHC"]), name: "identityapi-check", tags: new string[] { "identityapi" });
} }
public static void AddApplicationSevices(this WebApplicationBuilder builder) public static void AddApplicationSevices(this IServiceCollection services, IConfiguration configuration)
{ {
builder.Services.Configure<AppSettings>(builder.Configuration) services.Configure<AppSettings>(configuration)
.AddSession() .AddSession()
.AddDistributedMemoryCache(); .AddDistributedMemoryCache();
if (builder.Configuration["DPConnectionString"] is string redisConnection) if (configuration["DPConnectionString"] is string redisConnection)
{ {
builder.Services.AddDataProtection(opts => services.AddDataProtection(opts =>
{ {
opts.ApplicationDiscriminator = "eshop.webmvc"; opts.ApplicationDiscriminator = "eshop.webmvc";
}) })
@ -25,39 +25,38 @@ internal static class Extensions
} }
// Adds all Http client services // Adds all Http client services
public static void AddHttpClientServices(this WebApplicationBuilder builder) public static void AddHttpClientServices(this IServiceCollection services)
{ {
// Register delegating handlers // Register delegating handlers
builder.Services.AddTransient<HttpClientAuthorizationDelegatingHandler>() services.AddTransient<HttpClientAuthorizationDelegatingHandler>()
.AddTransient<HttpClientRequestIdDelegatingHandler>(); .AddTransient<HttpClientRequestIdDelegatingHandler>();
// Add http client services // Add http client services
builder.Services.AddHttpClient<IBasketService, BasketService>() services.AddHttpClient<IBasketService, BasketService>()
.SetHandlerLifetime(TimeSpan.FromMinutes(5)) //Sample. Default lifetime is 2 minutes .SetHandlerLifetime(TimeSpan.FromMinutes(5)) //Sample. Default lifetime is 2 minutes
.AddHttpMessageHandler<HttpClientAuthorizationDelegatingHandler>(); .AddHttpMessageHandler<HttpClientAuthorizationDelegatingHandler>();
builder.Services.AddHttpClient<ICatalogService, CatalogService>(); services.AddHttpClient<ICatalogService, CatalogService>();
builder.Services.AddHttpClient<IOrderingService, OrderingService>() services.AddHttpClient<IOrderingService, OrderingService>()
.AddHttpMessageHandler<HttpClientAuthorizationDelegatingHandler>() .AddHttpMessageHandler<HttpClientAuthorizationDelegatingHandler>()
.AddHttpMessageHandler<HttpClientRequestIdDelegatingHandler>(); .AddHttpMessageHandler<HttpClientRequestIdDelegatingHandler>();
//add custom application services //add custom application services
builder.Services.AddTransient<IIdentityParser<ApplicationUser>, IdentityParser>(); services.AddTransient<IIdentityParser<ApplicationUser>, IdentityParser>();
} }
public static void AddAuthenticationServices(this WebApplicationBuilder builder) public static void AddAuthenticationServices(this IServiceCollection services, IConfiguration configuration)
{ {
JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Remove("sub"); JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Remove("sub");
var identityUrl = builder.Configuration.GetRequiredValue("IdentityUrl"); var identityUrl = configuration.GetRequiredValue("IdentityUrl");
var callBackUrl = builder.Configuration.GetRequiredValue("CallBackUrl"); var callBackUrl = configuration.GetRequiredValue("CallBackUrl");
var sessionCookieLifetime = builder.Configuration.GetValue("SessionCookieLifetimeMinutes", 60); var sessionCookieLifetime = configuration.GetValue("SessionCookieLifetimeMinutes", 60);
// Add Authentication services // Add Authentication services
services.AddAuthentication(options =>
builder.Services.AddAuthentication(options =>
{ {
options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme; options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme; options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;

View File

@ -4,10 +4,10 @@ builder.AddServiceDefaults();
builder.Services.AddControllersWithViews(); builder.Services.AddControllersWithViews();
builder.AddHealthChecks(); builder.Services.AddHealthChecks(builder.Configuration);
builder.AddApplicationSevices(); builder.Services.AddApplicationSevices(builder.Configuration);
builder.AddHttpClientServices(); builder.Services.AddAuthenticationServices(builder.Configuration);
builder.AddAuthenticationServices(); builder.Services.AddHttpClientServices();
var app = builder.Build(); var app = builder.Build();
@ -20,11 +20,6 @@ app.UseSession();
// Refer to https://github.com/dotnet-architecture/eShopOnContainers/issues/1391 // Refer to https://github.com/dotnet-architecture/eShopOnContainers/issues/1391
app.UseCookiePolicy(new CookiePolicyOptions { MinimumSameSitePolicy = SameSiteMode.Lax }); app.UseCookiePolicy(new CookiePolicyOptions { MinimumSameSitePolicy = SameSiteMode.Lax });
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllerRoute("default", "{controller=Catalog}/{action=Index}/{id?}"); app.MapControllerRoute("default", "{controller=Catalog}/{action=Index}/{id?}");
app.MapControllerRoute("defaultError", "{controller=Error}/{action=Error}"); app.MapControllerRoute("defaultError", "{controller=Error}/{action=Error}");
app.MapControllers(); app.MapControllers();