// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); services.AddCors(); services.AddDbContext <EFContext>(opt => opt.UseSqlServer(Configuration["ConnectionString"], b => b.MigrationsAssembly("Project HONEY")).EnableSensitiveDataLogging() ); //Facebook auth start var facebookAuthSettings = new FacebookAuthSetting(); Configuration.Bind(nameof(FacebookAuthSetting), facebookAuthSettings); services.AddSingleton(facebookAuthSettings); services.AddHttpClient(); services.AddSingleton <IFacebookAuthService, FacebookAuthService>(); //Facebook auth end services.AddHangfire(configuration => configuration .SetDataCompatibilityLevel(CompatibilityLevel.Version_170) .UseSimpleAssemblyNameTypeSerializer() .UseRecommendedSerializerSettings() .UseSqlServerStorage(Configuration["ConnectionString"], new SqlServerStorageOptions { CommandBatchMaxTimeout = TimeSpan.FromMinutes(5), SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5), QueuePollInterval = TimeSpan.Zero, UseRecommendedIsolationLevel = true, DisableGlobalLocks = true })); services.AddHangfireServer(); services.AddIdentity <User, IdentityRole>() .AddEntityFrameworkStores <EFContext>() .AddDefaultTokenProviders(); services.AddTransient <IJWTTokenService, JWTTokenService>(); services.AddTransient <IQueriesService, QueriesService>(); var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration.GetValue <string>("SecretPhrase"))); services.Configure <IdentityOptions>(options => { options.Password.RequireDigit = true; options.Password.RequiredLength = 6; options.Password.RequireLowercase = false; options.Password.RequireNonAlphanumeric = false; options.Password.RequireUppercase = false; }); services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(cfg => { cfg.RequireHttpsMetadata = false; cfg.SaveToken = true; cfg.TokenValidationParameters = new TokenValidationParameters() { IssuerSigningKey = signingKey, ValidateAudience = false, ValidateIssuer = false, ValidateLifetime = true, ValidateIssuerSigningKey = true, // set ClockSkew is zero ClockSkew = TimeSpan.Zero }; }); // In production, the React files will be served from this directory services.AddSpaStaticFiles(configuration => { configuration.RootPath = "ClientApp/build"; }); }
public FacebookAuthService(FacebookAuthSetting FacebookAuthSetting, IHttpClientFactory HttpClientFactory) { this.FacebookAuthSettings = FacebookAuthSetting; this.HttpClientFactory = HttpClientFactory; }