mirror of https://github.com/abpframework/abp.git
16 changed files with 230 additions and 56 deletions
Binary file not shown.
@ -1,13 +1,46 @@ |
|||||
<Project Sdk="Microsoft.NET.Sdk.Web"> |
<Project Sdk="Microsoft.NET.Sdk.Web"> |
||||
|
|
||||
<PropertyGroup> |
<PropertyGroup> |
||||
<TargetFramework>netcoreapp2.2</TargetFramework> |
<TargetFramework>netcoreapp2.2</TargetFramework> |
||||
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel> |
<AssetTargetFallback>$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;</AssetTargetFallback> |
||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> |
||||
|
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType> |
||||
|
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles> |
||||
|
<PreserveCompilationContext>true</PreserveCompilationContext> |
||||
|
<MvcRazorExcludeRefAssembliesFromPublish>false</MvcRazorExcludeRefAssembliesFromPublish> |
||||
|
<MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish> |
||||
</PropertyGroup> |
</PropertyGroup> |
||||
|
|
||||
<ItemGroup> |
<ItemGroup> |
||||
<PackageReference Include="Microsoft.AspNetCore.App" /> |
<PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.0" /> |
||||
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" /> |
<PackageReference Include="Serilog.AspNetCore" Version="2.1.1" /> |
||||
|
<PackageReference Include="Serilog.Sinks.File" Version="4.0.0" /> |
||||
|
<PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" /> |
||||
|
<PackageReference Include="Ocelot" Version="13.0.0" /> |
||||
|
<PackageReference Include="IdentityServer4.AccessTokenValidation" Version="2.7.0" /> |
||||
</ItemGroup> |
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.Autofac\Volo.Abp.Autofac.csproj" /> |
||||
|
<ProjectReference Include="..\..\..\..\framework\src\Volo.Abp.EntityFrameworkCore.SqlServer\Volo.Abp.EntityFrameworkCore.SqlServer.csproj" /> |
||||
|
<ProjectReference Include="..\..\..\..\modules\identity\src\Volo.Abp.Identity.HttpApi\Volo.Abp.Identity.HttpApi.csproj" /> |
||||
|
<ProjectReference Include="..\..\..\..\modules\permission-management\src\Volo.Abp.PermissionManagement.EntityFrameworkCore\Volo.Abp.PermissionManagement.EntityFrameworkCore.csproj" /> |
||||
|
<ProjectReference Include="..\..\..\..\modules\setting-management\src\Volo.Abp.SettingManagement.EntityFrameworkCore\Volo.Abp.SettingManagement.EntityFrameworkCore.csproj" /> |
||||
|
<ProjectReference Include="..\..\modules\product\src\ProductManagement.HttpApi\ProductManagement.HttpApi.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<Compile Remove="Logs\**" /> |
||||
|
<Content Remove="Logs\**" /> |
||||
|
<EmbeddedResource Remove="Logs\**" /> |
||||
|
<None Remove="Logs\**" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<Content Update="appsettings.json"> |
||||
|
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory> |
||||
|
</Content> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
|
||||
</Project> |
</Project> |
||||
|
|||||
@ -0,0 +1,83 @@ |
|||||
|
using Microsoft.AspNetCore.Builder; |
||||
|
using Microsoft.Extensions.DependencyInjection; |
||||
|
using Ocelot.DependencyInjection; |
||||
|
using Ocelot.Middleware; |
||||
|
using ProductManagement; |
||||
|
using Swashbuckle.AspNetCore.Swagger; |
||||
|
using Volo.Abp; |
||||
|
using Volo.Abp.Autofac; |
||||
|
using Volo.Abp.EntityFrameworkCore; |
||||
|
using Volo.Abp.EntityFrameworkCore.SqlServer; |
||||
|
using Volo.Abp.Identity; |
||||
|
using Volo.Abp.Modularity; |
||||
|
using Volo.Abp.PermissionManagement.EntityFrameworkCore; |
||||
|
using Volo.Abp.Security.Claims; |
||||
|
using Volo.Abp.SettingManagement.EntityFrameworkCore; |
||||
|
|
||||
|
namespace InternalGateway.Host |
||||
|
{ |
||||
|
[DependsOn( |
||||
|
typeof(AbpAutofacModule), |
||||
|
typeof(AbpIdentityHttpApiModule), |
||||
|
typeof(ProductManagementHttpApiModule), |
||||
|
typeof(AbpEntityFrameworkCoreSqlServerModule), |
||||
|
typeof(AbpPermissionManagementEntityFrameworkCoreModule), |
||||
|
typeof(AbpSettingManagementEntityFrameworkCoreModule) |
||||
|
)] |
||||
|
public class InternalGatewayHostModule : AbpModule |
||||
|
{ |
||||
|
public override void ConfigureServices(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
//TODO: Internal gateway may not need to authentication in the gateway level, we may remove this when we complete and use the other gateways
|
||||
|
|
||||
|
context.Services.AddAuthentication("Bearer") |
||||
|
.AddIdentityServerAuthentication(options => |
||||
|
{ |
||||
|
options.Authority = "http://localhost:64999"; |
||||
|
options.RequireHttpsMetadata = false; |
||||
|
options.ApiName = "InternalGateway"; |
||||
|
|
||||
|
//TODO: Should create an extension method for that (may require to create a new ABP package depending on the IdentityServer4.AccessTokenValidation)
|
||||
|
options.InboundJwtClaimTypeMap["sub"] = AbpClaimTypes.UserId; |
||||
|
options.InboundJwtClaimTypeMap["role"] = AbpClaimTypes.Role; |
||||
|
options.InboundJwtClaimTypeMap["email"] = AbpClaimTypes.Email; |
||||
|
options.InboundJwtClaimTypeMap["email_verified"] = AbpClaimTypes.EmailVerified; |
||||
|
options.InboundJwtClaimTypeMap["phone_number"] = AbpClaimTypes.PhoneNumber; |
||||
|
options.InboundJwtClaimTypeMap["phone_number_verified"] = AbpClaimTypes.PhoneNumberVerified; |
||||
|
options.InboundJwtClaimTypeMap["name"] = AbpClaimTypes.UserName; |
||||
|
}); |
||||
|
|
||||
|
context.Services.AddSwaggerGen(options => |
||||
|
{ |
||||
|
options.SwaggerDoc("v1", new Info { Title = "Internal Gateway API", Version = "v1" }); |
||||
|
options.DocInclusionPredicate((docName, description) => true); |
||||
|
options.CustomSchemaIds(type => type.FullName); |
||||
|
}); |
||||
|
|
||||
|
context.Services.AddOcelot(context.Services.GetConfiguration()); |
||||
|
|
||||
|
Configure<AbpDbContextOptions>(options => |
||||
|
{ |
||||
|
options.UseSqlServer(); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
public override void OnApplicationInitialization(ApplicationInitializationContext context) |
||||
|
{ |
||||
|
var app = context.GetApplicationBuilder(); |
||||
|
|
||||
|
app.UseVirtualFiles(); |
||||
|
app.UseAuthentication(); |
||||
|
app.UseSwagger(); |
||||
|
app.UseSwaggerUI(options => |
||||
|
{ |
||||
|
options.SwaggerEndpoint("/swagger/v1/swagger.json", "Internal Gateway API"); |
||||
|
}); |
||||
|
|
||||
|
app.MapWhen(ctx => ctx.Request.Path.ToString().StartsWith("/api/abp/") || ctx.Request.Path.ToString().StartsWith("/Abp/"), |
||||
|
app2 => { app2.UseMvcWithDefaultRouteAndArea(); }); |
||||
|
|
||||
|
app.UseOcelot().Wait(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -1,24 +1,46 @@ |
|||||
using System; |
using System; |
||||
using System.Collections.Generic; |
|
||||
using System.IO; |
using System.IO; |
||||
using System.Linq; |
|
||||
using System.Threading.Tasks; |
|
||||
using Microsoft.AspNetCore; |
|
||||
using Microsoft.AspNetCore.Hosting; |
using Microsoft.AspNetCore.Hosting; |
||||
using Microsoft.Extensions.Configuration; |
using Serilog; |
||||
using Microsoft.Extensions.Logging; |
using Serilog.Events; |
||||
|
|
||||
namespace InternalGateway.Host |
namespace InternalGateway.Host |
||||
{ |
{ |
||||
public class Program |
public class Program |
||||
{ |
{ |
||||
public static void Main(string[] args) |
public static int Main(string[] args) |
||||
{ |
{ |
||||
CreateWebHostBuilder(args).Build().Run(); |
Log.Logger = new LoggerConfiguration() |
||||
|
.MinimumLevel.Debug() |
||||
|
.MinimumLevel.Override("Microsoft", LogEventLevel.Information) |
||||
|
.Enrich.FromLogContext() |
||||
|
.WriteTo.File("Logs/logs.txt") |
||||
|
.CreateLogger(); |
||||
|
|
||||
|
try |
||||
|
{ |
||||
|
Log.Information("Starting IdentityService.Host."); |
||||
|
BuildWebHostInternal(args).Run(); |
||||
|
return 0; |
||||
|
} |
||||
|
catch (Exception ex) |
||||
|
{ |
||||
|
Log.Fatal(ex, "IdentityService.Host terminated unexpectedly!"); |
||||
|
return 1; |
||||
|
} |
||||
|
finally |
||||
|
{ |
||||
|
Log.CloseAndFlush(); |
||||
|
} |
||||
} |
} |
||||
|
|
||||
public static IWebHostBuilder CreateWebHostBuilder(string[] args) => |
public static IWebHost BuildWebHostInternal(string[] args) => |
||||
WebHost.CreateDefaultBuilder(args) |
new WebHostBuilder() |
||||
.UseStartup<Startup>(); |
.UseKestrel() |
||||
|
.UseContentRoot(Directory.GetCurrentDirectory()) |
||||
|
.UseIISIntegration() |
||||
|
.UseStartup<Startup>() |
||||
|
.UseSerilog() |
||||
|
.Build(); |
||||
} |
} |
||||
} |
} |
||||
|
|||||
@ -1,34 +1,28 @@ |
|||||
using System; |
using System; |
||||
using System.Collections.Generic; |
|
||||
using System.Linq; |
|
||||
using System.Threading.Tasks; |
|
||||
using Microsoft.AspNetCore.Builder; |
using Microsoft.AspNetCore.Builder; |
||||
using Microsoft.AspNetCore.Hosting; |
using Microsoft.AspNetCore.Hosting; |
||||
using Microsoft.AspNetCore.Http; |
|
||||
using Microsoft.Extensions.DependencyInjection; |
using Microsoft.Extensions.DependencyInjection; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
using Volo.Abp; |
||||
|
|
||||
namespace InternalGateway.Host |
namespace InternalGateway.Host |
||||
{ |
{ |
||||
public class Startup |
public class Startup |
||||
{ |
{ |
||||
// This method gets called by the runtime. Use this method to add services to the container.
|
public IServiceProvider ConfigureServices(IServiceCollection services) |
||||
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
|
|
||||
public void ConfigureServices(IServiceCollection services) |
|
||||
{ |
{ |
||||
|
services.AddApplication<InternalGatewayHostModule>(options => |
||||
|
{ |
||||
|
options.UseAutofac(); |
||||
|
options.Configuration.UserSecretsAssembly = typeof(Startup).Assembly; |
||||
|
}); |
||||
|
|
||||
|
return services.BuildServiceProviderFromFactory(); |
||||
} |
} |
||||
|
|
||||
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
|
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) |
||||
public void Configure(IApplicationBuilder app, IHostingEnvironment env) |
|
||||
{ |
{ |
||||
if (env.IsDevelopment()) |
app.InitializeApplication(); |
||||
{ |
|
||||
app.UseDeveloperExceptionPage(); |
|
||||
} |
|
||||
|
|
||||
app.Run(async (context) => |
|
||||
{ |
|
||||
await context.Response.WriteAsync("Hello World!"); |
|
||||
}); |
|
||||
} |
} |
||||
} |
} |
||||
} |
} |
||||
|
|||||
Loading…
Reference in new issue