QPANC são as iniciais de Quasar PostgreSQL ASP NET Core.
- Source
- Introdução
- Parte I - ASP.NET - Inicializando os Projetos
- Parte 2 - PostgreSQL
- Parte 3 - ASP.NET - Registrando Serviços e Lendo Variáveis de Ambiente
- Parte 4 - ASP.NET - Entity Framework e ASP.NET Core Identity
- Parte 5 - ASP.NET - Documentação Interativa com Swagger
- Parte 6 - ASP.NET - Regionalização
- Parte 7 - ASP.NET - Autenticação e Autorização
- Parte 8 - ASP.NET - CORS
- Parte 9 - Quasar - Criação e Configuração do Projeto
- Parte 10 - Quasar - Configurações e Customizações
- Parte 11 - Quasar - Componentes - Diferença entre SPA e SSR
- Parte 12 - Quasar - Serviços
- Parte 13 - Quasar - Regionalização e Stores
- Parte 14 - Quasar - Consumindo a API
- Parte 15 - Quasar - Login
- Parte 16 - Quasar - Áreas Protegidas
- Parte 17 - Quasar - Registro
- Parte 18 - Docker - Maquina Virtual Linux
- Parte 19 - Docker - Registro e Build
- Parte 20 - Docker - Traefik e Publicação
- Demo Online
14 Ativando o CORS
Por enquanto, nós testamos a API
usando o Swagger
, que é executado do mesmo domínio, porém o app feito usando o Quasar
será executado de outro domínio, especialmente.
O primeiro passo, é adicionar o serviço que irá ler as configurações relativas ao CORS.:
QPANC.Services.Abstract/Business/ICors.cs
namespace QPANC.Services.Abstract
{
public interface ICors
{
string[] Hosts { get; }
}
}
QPANC.Services/Business/Cors.cs
using Microsoft.Extensions.Configuration;
using QPANC.Services.Abstract;
using IConfiguration = QPANC.Services.Abstract.IConfiguration;
namespace QPANC.Services
{
public class Cors : ICors
{
private IConfiguration _configuration;
public Cors(IConfiguration configuration)
{
this._configuration = configuration;
}
public string[] Hosts
{
get
{
var hosts = this._configuration.Root
.GetSection("CORS_HOSTS")
.AsEnumerable()
.Select(pair => pair.Value)
.Where(value => !string.IsNullOrWhiteSpace(value))
.ToArray();
return hosts ;
}
}
}
}
Agora, adicione a respectiva variável de ambiente ao docker-compose.override.yml
services:
qpanc.api:
environment:
- CORS_HOSTS__0=localhost
caso precise permitir múltiplos domínios, adicione as variáveis CORS_HOSTS__1
, CORS_HOSTS__2
até a CORS_HOSTS__n
.
Enquanto estamos desenvolvendo, iremos liberar apenas o localhost
.
Claro, deverá adicionar o
QPANC.Services.Abstract.ICors
aoQPANC.Services.Abstract.IAppSettings
e oQPANC.Services.Cors
aoQPANC.Services.AppSettings
.Assim como adicionar
services.AddSingleton<ICors, Cors>();
aoQPANC.Api.Extensions.ServiceCollectionExtensions
.
Agora, precisamos criar um arquivo de options
para a configuração do Cors
:
QPANC.Api/Options/Cors.cs
using Microsoft.AspNetCore.Cors.Infrastructure;
using Microsoft.Extensions.Options;
using QPANC.Services.Abstract;
using System;
using System.Linq;
namespace QPANC.Api.Options
{
public class Cors : IConfigureOptions<CorsOptions>
{
private ICors _settings;
public Cors(ICors settings)
{
this._settings = settings;
}
public void Configure(CorsOptions options)
{
options.AddDefaultPolicy(builder =>
{
builder
.SetIsOriginAllowed(url => {
var host = new Uri(url).Host;
return this._settings.Hosts.Contains(host);
})
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();
});
}
}
}
Por fim, precisamos aplicar esta configuração no Startup:
QPANC.API/Startup.cs
namespace QPANC.Api
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
services.ConfigureOptions<Options.Cors>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ISeeder seeder)
{
app.UseCors();
}
}
}
Com isto, dou por finalizado a parte referente ao ASP.NET Core, assim podemos voltar a nossa atenção para o Quasar.
Top comments (0)