// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); #region Registra o banco de dados var connection = Configuration["SQLServerConnection:SQLServerConnectionString"]; services.AddDbContext <SQLServerContext>(options => options.UseSqlServer(connection)); #endregion #region Registra as dependências da camada de serviços services.AddScoped <IUserService, UserService>(); #endregion #region Registra as dependências da camada de dados services.AddScoped <IUserServiceSqlServer, UserServiceSqlServer>(); #endregion #region Registra o Swagger services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "RestFul API with .NET Core 2.0", Version = "v1" }); }); #endregion #region Registra o modelo de autenticação via JWT var signConfiguration = new SignConfigurationcs(); services.AddSingleton(signConfiguration); var tokenConfiguration = new TokenConfigurationcs(); new ConfigureFromConfigurationOptions <TokenConfigurationcs>( Configuration.GetSection("TokenConfigurations") ).Configure(tokenConfiguration); services.AddSingleton(signConfiguration); services.AddAuthentication(authOptions => { authOptions.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; authOptions.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(bearerOptions => { var paramsValidation = bearerOptions.TokenValidationParameters; paramsValidation.IssuerSigningKey = signConfiguration.Key; paramsValidation.ValidateAudience = string.IsNullOrEmpty(tokenConfiguration.Audience); paramsValidation.ValidateIssuer = string.IsNullOrEmpty(tokenConfiguration.Issuer); paramsValidation.ValidateIssuerSigningKey = true; paramsValidation.ValidateLifetime = true; paramsValidation.ClockSkew = TimeSpan.Zero; }); services.AddAuthorization(auth => { auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder() .AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme) .RequireAuthenticatedUser().Build()); }); #endregion }
public UserService(IUserServiceSqlServer userServiceSqlServer, SignConfigurationcs signConfiguration, TokenConfigurationcs tokenConfiguration) { _userServiceSqlServer = userServiceSqlServer; _signConfiguration = signConfiguration; _tokenConfiguration = tokenConfiguration; }