using Microservices.Web.Handler;
using Microservices.Web.Services.Abstract;
using Microservices.Web.Services.Concrete;
using Microservices.Web.Settings;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace Microservices.Web
public Startup(IConfiguration configuration)
Configuration = configuration;
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
services.AddControllersWithViews();
services.Configure<ServiceApiSettings>(Configuration.GetSection("ServiceApiSettings"));
services.Configure<ClientSettings>(Configuration.GetSection("ClientSettings"));
var apiSettings = Configuration.GetSection("ServiceApiSettings").Get<ServiceApiSettings>();
services.AddHttpContextAccessor();
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(opt =>
opt.Cookie.HttpOnly = true;
opt.LoginPath = new Microsoft.AspNetCore.Http.PathString("/Auth/SignIn");
opt.Cookie.Name = "MicroserviceCookie";
opt.Cookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Strict;
opt.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.SameAsRequest;
opt.ExpireTimeSpan = TimeSpan.FromMinutes(60);
opt.SlidingExpiration = true;
services.AddScoped<UserTokenHandler>();
services.AddHttpClient<IAuthService, AuthService>(opt =>
opt.BaseAddress = new Uri(apiSettings.AuthUri);
}).SetHandlerLifetime(TimeSpan.FromMinutes(5)).AddHttpMessageHandler<UserTokenHandler>();
services.AddHttpClient<IUserService, UserService>(opt=>
opt.BaseAddress = new Uri(apiSettings.AuthUri);
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
app.UseDeveloperExceptionPage();
app.UseExceptionHandler("/Home/Error");
app.UseEndpoints(endpoints =>
endpoints.MapControllerRoute(
pattern: "{controller=Home}/{action=Index}/{id?}");