public static void InitializeServices(IServiceCollection services, IdentityServicesConfiguration servicesConfiguration) { var migrationsAssemblyName = typeof(Initializer).GetTypeInfo().Assembly.GetName().Name; // Add framework services. services.AddDbContext <ApplicationDbContext>(options => options.UseSqlServer(servicesConfiguration.ApplicationConnectionString, sqlServerOptionsAction: sqlOptions => { sqlOptions.MigrationsAssembly(migrationsAssemblyName); sqlOptions.EnableRetryOnFailure(maxRetryCount: 15, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null); })); services.AddIdentity <ApplicationUser, IdentityRole>(options => { options.Password.RequireDigit = false; options.Password.RequiredLength = 3; options.Password.RequireNonAlphanumeric = false; options.Password.RequireUppercase = false; options.Password.RequireLowercase = false; }) .AddEntityFrameworkStores <ApplicationDbContext>() .AddDefaultTokenProviders(); // Adds IdentityServer services.AddIdentityServer(x => { x.IssuerUri = "null"; x.Authentication.CookieLifetime = TimeSpan.FromHours(2); }) .AddSigningCredential(Certificate.Get()) .AddAspNetIdentity <ApplicationUser>() .AddConfigurationStore(options => { options.ConfigureDbContext = builder => builder.UseSqlServer(servicesConfiguration.ConfigurationConnectionString, sqlServerOptionsAction: sqlOptions => { sqlOptions.MigrationsAssembly(migrationsAssemblyName); sqlOptions.EnableRetryOnFailure(maxRetryCount: 15, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null); }); }) .AddOperationalStore(options => { options.ConfigureDbContext = builder => builder.UseSqlServer(servicesConfiguration.OperationalConnectionString, sqlServerOptionsAction: sqlOptions => { sqlOptions.MigrationsAssembly(migrationsAssemblyName); sqlOptions.EnableRetryOnFailure(maxRetryCount: 15, maxRetryDelay: TimeSpan.FromSeconds(30), errorNumbersToAdd: null); }); }); services.AddTransient <IProfileService, ProfileService>(); services.AddTransient <ILoginService, UserManagerLoginService>(); services.AddTransient <IRegisterService, UserManagerRegisterService>(); services.AddTransient <IExternalLoginService, IdentityInteractionsExternalLoginService>(); }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var connectionString = Configuration.GetConnectionString("DefaultConnection"); var servicesConfiguration = new IdentityServicesConfiguration() { ApplicationConnectionString = connectionString, ConfigurationConnectionString = connectionString, OperationalConnectionString = connectionString }; Initializer.InitializeServices(services, servicesConfiguration); services.AddLocalization(options => options.ResourcesPath = "Resources"); services.AddMvc() .AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix) .AddDataAnnotationsLocalization(options => { options.DataAnnotationLocalizerProvider = (type, factory) => { var assemblyName = new AssemblyName(typeof(SharedResource).GetTypeInfo().Assembly.FullName); return(factory.Create(nameof(SharedResource), assemblyName.Name)); }; }) .SetCompatibilityVersion(CompatibilityVersion.Version_2_1); services.AddCors(options => { // this defines a CORS policy called "default" options.AddPolicy("default", policy => { policy.AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod(); }); }); }