diff --git a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/AbpProWebBlazorServerConsts.cs b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/AbpProWebBlazorServerConsts.cs deleted file mode 100644 index d0b6488c..00000000 --- a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/AbpProWebBlazorServerConsts.cs +++ /dev/null @@ -1,40 +0,0 @@ -namespace Lion.AbpPro -{ - public class AbpProWebBlazorServerConsts - { - /// - /// 跨域策略名 - /// - public const string DefaultCorsPolicyName = "Default"; - - /// - /// Cookies名称 - /// - public const string DefaultCookieName = "Lion.AbpPro.Http.Api"; - - /// - /// SwaggerUi 端点 - /// - public const string SwaggerUiEndPoint = "/swagger"; - - /// - /// Hangfire 端点 - /// - public const string HangfireDashboardEndPoint = "/hangfire"; - - /// - /// CAP 端点 - /// - public const string CapDashboardEndPoint = "/cap"; - - - public const string MoreEndPoint = "https://doc.cncore.club/"; - - - /// - /// HMiniprofiler端点 - /// - public const string MiniprofilerEndPoint = "/profiler/results-index"; - - } -} \ No newline at end of file diff --git a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/AbpProWebBlazorServerModule.cs b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/AbpProWebBlazorServerModule.cs index 6da54ab6..f6811177 100644 --- a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/AbpProWebBlazorServerModule.cs +++ b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/AbpProWebBlazorServerModule.cs @@ -1,376 +1,60 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Hangfire; -using Hangfire.MySql; -using Lion.AbpPro.Blazor.Layout.AntDesignTheme; -using Lion.AbpPro.CAP; -using Lion.AbpPro.ConfigurationOptions; +using Lion.AbpPro.Blazor.Layout.AntDesignTheme; using Lion.AbpPro.EntityFrameworkCore; -using Lion.AbpPro.Extensions; -using Lion.AbpPro.MultiTenancy; -using Lion.AbpPro.Swaggers; using Lion.AbpPro.Web.Blazor.Server.Data; -using LionAbpPro.Extensions.Filters; -using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.DataProtection; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; -using Microsoft.IdentityModel.Tokens; -using Microsoft.OpenApi.Models; -using Savorboard.CAP.InMemoryMessageQueue; -using Serilog; -using StackExchange.Redis; -using Swashbuckle.AspNetCore.SwaggerUI; using Volo.Abp; +using Volo.Abp.Account; using Volo.Abp.Account.Web; -using Volo.Abp.AspNetCore.Authentication.JwtBearer; -using Volo.Abp.AspNetCore.Components.Server.Theming; -using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic; using Volo.Abp.AspNetCore.Serilog; using Volo.Abp.Autofac; -using Volo.Abp.BackgroundJobs; -using Volo.Abp.BackgroundJobs.Hangfire; -using Volo.Abp.Caching; -using Volo.Abp.Caching.StackExchangeRedis; using Volo.Abp.Modularity; namespace Lion.AbpPro.Web.Blazor.Server { [DependsOn(typeof(AbpAutofacModule), typeof(AbpAspNetCoreSerilogModule), - typeof(AbpProBlazorLayoutAntDesignThemeModule), typeof(AbpProApplicationModule), + typeof(AbpProHttpApiModule), typeof(AbpProEntityFrameworkCoreModule), typeof(AbpAccountWebModule), - typeof(AbpAspNetCoreSerilogModule), - typeof(AbpAutofacModule), - typeof(AbpBackgroundJobsHangfireModule), - typeof(AbpProAbpCapModule), - typeof(SharedHostingMicroserviceModule), - typeof(AbpCachingStackExchangeRedisModule), - typeof(AbpAspNetCoreAuthenticationJwtBearerModule), - typeof(AbpAspNetCoreComponentsServerThemingModule))] + typeof(AbpAspNetCoreMvcUiBasicThemeModule), + typeof(AbpProBlazorLayoutAntDesignThemeModule) + )] public class AbpProWebBlazorServerModule:AbpModule { - public override void ConfigureServices(ServiceConfigurationContext context) + public override void ConfigureServices(ServiceConfigurationContext context) { - var configuration = context.Services.GetConfiguration(); - ConfigureCache(context); - ConfigureSwaggerServices(context, configuration); - ConfigureOptions(context); - ConfigureJwtAuthentication(context, configuration); - ConfigureHangfireMysql(context); - ConfigurationCap(context); - ConfigurationStsHttpClient(context); - ConfigurationMiniProfiler(context); + context.Services.AddRazorPages(); + context.Services.AddServerSideBlazor(); + context.Services.AddSingleton(); } public override void OnApplicationInitialization(ApplicationInitializationContext context) { + var env = context.GetEnvironment(); var app = context.GetApplicationBuilder(); - var configuration = context.GetConfiguration(); - app.UseAbpRequestLocalization(); - app.UseCorrelationId(); - app.UseStaticFiles(); - app.UseMiniProfiler(); - app.UseRouting(); - app.UseCors(AbpProWebBlazorServerConsts.DefaultCorsPolicyName); - app.UseAuthentication(); - - if (MultiTenancyConsts.IsEnabled) + if (env.IsDevelopment()) { - app.UseMultiTenancy(); + app.UseDeveloperExceptionPage(); } - - app.UseAuthorization(); - app.UseSwagger(); - app.UseAbpSwaggerUI(options => - { - options.SwaggerEndpoint("/swagger/AbpPro/swagger.json", "AbpPro API"); - options.DocExpansion(DocExpansion.None); - options.DefaultModelsExpandDepth(-1); - }); - - app.UseAuditing(); - app.UseAbpSerilogEnrichers(); - app.UseSerilogRequestLogging(opts => - { - opts.EnrichDiagnosticContext = SerilogToEsExtensions.EnrichFromRequest; - }); - app.UseUnitOfWork(); - app.UseConfiguredEndpoints(endpoints => { endpoints.MapHealthChecks("/health"); }); - app.UseHangfireDashboard("/hangfire", new DashboardOptions() - { - Authorization = new[] { new CustomHangfireAuthorizeFilter() }, - IgnoreAntiforgeryToken = true - }); - - if (configuration.GetValue("Consul:Enabled", false)) + else { - app.UseConsul(); + app.UseExceptionHandler("/Error"); } - } - - - private void ConfigureHangfireMysql(ServiceConfigurationContext context) - { - Configure(options => - { - options.IsJobExecutionEnabled = true; - }); - context.Services.AddHangfire(config => - { - config.UseStorage(new MySqlStorage( - context.Services.GetConfiguration().GetConnectionString("Default"), - new MySqlStorageOptions() - { - //CommandBatchMaxTimeout = TimeSpan.FromMinutes(5), - //SlidingInvisibilityTimeout = TimeSpan.FromMinutes(5), - //QueuePollInterval = TimeSpan.Zero, - //UseRecommendedIsolationLevel = true, - //DisableGlobalLocks = true - })); - }); - } - - /// - /// 配置MiniProfiler - /// - /// - private void ConfigurationMiniProfiler(ServiceConfigurationContext context) - { - - context.Services.AddMiniProfiler(options => options.RouteBasePath = "/profiler") - .AddEntityFramework(); - } - - /// - /// 配置JWT - /// - /// - /// - private void ConfigureJwtAuthentication(ServiceConfigurationContext context, - IConfiguration configuration) - { - context.Services.AddAuthentication(options => - { - options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; - options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; - }) - .AddJwtBearer(options => - { - options.TokenValidationParameters = - new Microsoft.IdentityModel.Tokens.TokenValidationParameters() - { - // 是否开启签名认证 - ValidateIssuerSigningKey = true, - ValidateIssuer = true, - ValidateAudience = true, - ValidateLifetime = true, - //ClockSkew = TimeSpan.Zero, - ValidIssuer = configuration["Jwt:Issuer"], - ValidAudience = configuration["Jwt:Audience"], - IssuerSigningKey = - new SymmetricSecurityKey( - Encoding.ASCII.GetBytes(configuration["Jwt:SecurityKey"])) - }; - - options.Events = new JwtBearerEvents - { - OnMessageReceived = currentContext => - { - var path = currentContext.HttpContext.Request.Path; - if (path.StartsWithSegments("/login")) - { - return Task.CompletedTask; - } - - var accessToken = - currentContext.Request.Query["access_token"].FirstOrDefault() ?? - currentContext.Request.Cookies[ - AbpProWebBlazorServerConsts.DefaultCookieName]; - - if (accessToken.IsNullOrWhiteSpace()) - { - return Task.CompletedTask; - } - - if (path.StartsWithSegments("/signalr")) - { - currentContext.Token = accessToken; - } - - currentContext.Request.Headers.Remove("Authorization"); - currentContext.Request.Headers.Add("Authorization", - $"Bearer {accessToken}"); - - // 如果请求来自hangfire 或者cap - if (path.ToString().StartsWith("/hangfire") || - path.ToString().StartsWith("/cap")) - { - // currentContext.HttpContext.Response.Headers.Remove( - // "X-Frame-Options"); - currentContext.Token = accessToken; - } + app.UseStaticFiles(); - return Task.CompletedTask; - } - }; - }); - } - - /// - /// 配置options - /// - /// - private void ConfigureOptions(ServiceConfigurationContext context) - { - context.Services.Configure(context.Services.GetConfiguration() - .GetSection("Jwt")); - } - - /// - /// Redis缓存 - /// - private void ConfigureCache(ServiceConfigurationContext context) - { - Configure( - options => { options.KeyPrefix = "AbpPro:"; }); - var configuration = context.Services.GetConfiguration(); - var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); - context.Services - .AddDataProtection() - .PersistKeysToStackExchangeRedis(redis, "AbpPro-Protection-Keys"); - } - - - private void ConfigurationStsHttpClient(ServiceConfigurationContext context) - { - context.Services.AddHttpClient(context.Services.GetConfiguration().GetSection("HttpClient:Sts:Name").Value, - options => - { - options.BaseAddress = - new Uri(context.Services.GetConfiguration().GetSection("HttpClient:Sts:Url") - .Value); - }); - } - - private void ConfigureConventionalControllers() - { - Configure(options => + app.UseRouting(); + // app.MapBlazorHub(); + // app.MapFallbackToPage("/_Host"); + app.UseEndpoints(endpoints => { - options.ConventionalControllers.Create(typeof(AbpProApplicationModule) - .Assembly); + endpoints.MapBlazorHub(); + endpoints.MapFallbackToPage("/_Host"); }); } - - private static void ConfigureSwaggerServices(ServiceConfigurationContext context, - IConfiguration configuration) - { - context.Services.AddSwaggerGen( - options => - { - options.SwaggerDoc("AbpPro", - new OpenApiInfo { Title = "LionAbpPro API", Version = "v1" }); - options.DocInclusionPredicate((docName, description) => true); - //TODO - // options.EnableAnnotations(); // 启用注解 - options.DocumentFilter(); - options.SchemaFilter(); - // 加载所有xml注释,这里会导致swagger加载有点缓慢 - var xmls = Directory.GetFiles(AppContext.BaseDirectory, "*.xml"); - foreach (var xml in xmls) - { - options.IncludeXmlComments(xml, true); - } - - options.AddSecurityDefinition(JwtBearerDefaults.AuthenticationScheme, - new OpenApiSecurityScheme() - { - Description = "直接在下框输入JWT生成的Token", - Name = "Authorization", - In = ParameterLocation.Header, - Type = SecuritySchemeType.Http, - Scheme = JwtBearerDefaults.AuthenticationScheme, - BearerFormat = "JWT" - - }); - options.AddSecurityRequirement(new OpenApiSecurityRequirement - { - { - new OpenApiSecurityScheme - { - Reference = new OpenApiReference - { - Type = ReferenceType.SecurityScheme, Id = "Bearer" - } - }, - new List() - } - }); - - options.AddSecurityDefinition("ApiKey", new OpenApiSecurityScheme() - { - Type = SecuritySchemeType.ApiKey, - In = ParameterLocation.Header, - Name = "Accept-Language", - Description = "多语言设置,系统预设语言有zh-Hans、en,默认为zh-Hans" - }); - - options.AddSecurityRequirement(new OpenApiSecurityRequirement - { - { - new OpenApiSecurityScheme - { - Reference = new OpenApiReference - { Type = ReferenceType.SecurityScheme, Id = "ApiKey" } - }, - new string[] { } - } - }); - }); - } - - - private void ConfigurationCap(ServiceConfigurationContext context) - { - var configuration = context.Services.GetConfiguration(); - var enabled = configuration.GetValue("Cap:Enabled", false); - if (enabled) - { - context.AddAbpCap(capOptions => - { - capOptions.UseEntityFramework(); - capOptions.UseRabbitMQ(option => - { - option.HostName = configuration.GetValue("Cap:RabbitMq:HostName"); - option.UserName = configuration.GetValue("Cap:RabbitMq:UserName"); - option.Password = configuration.GetValue("Cap:RabbitMq:Password"); - }); - - var hostingEnvironment = context.Services.GetHostingEnvironment(); - bool auth = !hostingEnvironment.IsDevelopment(); - capOptions.UseDashboard(options => { options.UseAuth = auth; }); - }); - } - else - { - context.AddAbpCap(capOptions => - { - capOptions.UseInMemoryStorage(); - capOptions.UseInMemoryMessageQueue(); - var hostingEnvironment = context.Services.GetHostingEnvironment(); - bool auth = !hostingEnvironment.IsDevelopment(); - capOptions.UseDashboard(options => { options.UseAuth = auth; }); - }); - } - } } } diff --git a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Extensions/Filters/CustomHangfireAuthorizeFilter.cs b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Extensions/Filters/CustomHangfireAuthorizeFilter.cs deleted file mode 100644 index b4ac1b1d..00000000 --- a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Extensions/Filters/CustomHangfireAuthorizeFilter.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Hangfire.Dashboard; -using Microsoft.Extensions.DependencyInjection; -using Volo.Abp.Users; - -namespace LionAbpPro.Extensions.Filters -{ - public class CustomHangfireAuthorizeFilter : IDashboardAuthorizationFilter - { - public bool Authorize(DashboardContext context) - { - var _currentUser = context.GetHttpContext().RequestServices.GetRequiredService(); - return _currentUser.IsAuthenticated; - } - } -} diff --git a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Extensions/RecurringJobsExtensions.cs b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Extensions/RecurringJobsExtensions.cs deleted file mode 100644 index d55e94f4..00000000 --- a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Extensions/RecurringJobsExtensions.cs +++ /dev/null @@ -1,16 +0,0 @@ -// using Hangfire; -// using Microsoft.Extensions.DependencyInjection; -// using System; -// using LionAbpPro.Jobs; -// -// namespace LionAbpPro.Extensions -// { -// public static class RecurringJobsExtensions -// { -// public static void CreateRecurringJob(this IServiceProvider service) -// { -// var job = service.GetService(); -// RecurringJob.AddOrUpdate("测试Job", () => job.ExecuteAsync(), CronTypeHelper.Minute(1)); -// } -// } -// } diff --git a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Extensions/SerilogToEsExtensions.cs b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Extensions/SerilogToEsExtensions.cs deleted file mode 100644 index eeb1fd40..00000000 --- a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Extensions/SerilogToEsExtensions.cs +++ /dev/null @@ -1,141 +0,0 @@ -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Configuration; -using Serilog; -using System; -using System.IO; -using System.Text; -using System.Threading.Tasks; -using Microsoft.Extensions.Hosting; -using Serilog.Exceptions; -using Serilog.Exceptions.Core; -using Serilog.Sinks.Elasticsearch; - -namespace Lion.AbpPro.Extensions -{ - public static class SerilogToEsExtensions - { - public static void SetSerilogConfiguration(LoggerConfiguration loggerConfiguration, IConfiguration configuration, - IHostEnvironment hostingEnvironment) - { - // 默认读取 configuration 中 "Serilog" 节点下的配置 - loggerConfiguration.ReadFrom.Configuration(configuration) - .Enrich.WithExceptionDetails() - .Enrich.WithExceptionDetails(new DestructuringOptionsBuilder() - .WithDefaultDestructurers() - ) - .Enrich.FromLogContext() - .WriteTo.Console(); - - if (hostingEnvironment.IsDevelopment()) - { - loggerConfiguration.WriteTo.File("logs/logs.txt", rollingInterval: RollingInterval.Day); - } - loggerConfiguration.WriteTo.File("logs/logs.txt", rollingInterval: RollingInterval.Day); - var writeToElasticSearch = configuration.GetValue("ElasticSearch:Enabled", false); - - - // LogToElasticSearch:Enabled = true 才输出至ES - if (!writeToElasticSearch) - return; - - var applicationName = "Lion.AbpPro.HttpApi.Host"; - - var esUrl = configuration["ElasticSearch:Url"]; - // 需要设置ES URL - if (string.IsNullOrEmpty(esUrl)) - return; - - - var indexFormat = configuration["ElasticSearch:IndexFormat"]; - - // 需要设置ES URL - if (string.IsNullOrEmpty(indexFormat)) - return; - - var esUserName = configuration["ElasticSearch:UserName"]; - var esPassword = configuration["ElasticSearch:Password"]; - - loggerConfiguration.Enrich.FromLogContext().Enrich.WithExceptionDetails().WriteTo - .Elasticsearch(BuildElasticSearchSinkOptions(esUrl, indexFormat, esUserName, esPassword)); - loggerConfiguration.Enrich.WithProperty("Application", applicationName); - } - - // 创建Es连接 - private static ElasticsearchSinkOptions BuildElasticSearchSinkOptions( - string url, - string indexFormat, - string userName, - string password) - { - if (string.IsNullOrEmpty(userName)) - { - return new ElasticsearchSinkOptions(new Uri(url)) - { - AutoRegisterTemplate = true, - AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7, - IndexFormat = indexFormat - }; - } - - return new ElasticsearchSinkOptions(new Uri(url)) - { - AutoRegisterTemplate = true, - AutoRegisterTemplateVersion = AutoRegisterTemplateVersion.ESv7, - IndexFormat = indexFormat, - ModifyConnectionSettings = x => x.BasicAuthentication(userName, password) - }; - } - - public static void EnrichFromRequest(IDiagnosticContext diagnosticContext, HttpContext httpContext) - { - var request = httpContext.Request; - - // 为每个请求都设置通用的属性 - diagnosticContext.Set("Host", request.Host); - diagnosticContext.Set("Protocol", request.Protocol); - diagnosticContext.Set("Scheme", request.Scheme); - diagnosticContext.Set("RemoteIpAddress", httpContext.Connection.RemoteIpAddress); - // 如果要记录 Request Body 或 Response Body - // 参考 https://stackoverflow.com/questions/60076922/serilog-logging-web-api-methods-adding-context-properties-inside-middleware - string requestBody = ReadRequestBody(httpContext.Request).Result; - if (!string.IsNullOrEmpty(requestBody)) - { - diagnosticContext.Set("RequestBody", requestBody); - } - - // string responseBody = ReadResponseBody(httpContext.Response).Result; - // if (!string.IsNullOrEmpty(responseBody)) - // { - // diagnosticContext.Set("ResponseBody", requestBody); - // } - - if (request.QueryString.HasValue) - { - diagnosticContext.Set("QueryString", request.QueryString.Value); - } - } - - private static async Task ReadRequestBody(HttpRequest request) - { - HttpRequestRewindExtensions.EnableBuffering(request); - - var body = request.Body; - var buffer = new byte[Convert.ToInt32(request.ContentLength)]; - await request.Body.ReadAsync(buffer, 0, buffer.Length); - string requestBody = Encoding.UTF8.GetString(buffer); - body.Seek(0, SeekOrigin.Begin); - request.Body = body; - - return $"{requestBody}"; - } - - private static async Task ReadResponseBody(HttpResponse response) - { - response.Body.Seek(0, SeekOrigin.Begin); - string responseBody = await new StreamReader(response.Body).ReadToEndAsync(); - response.Body.Seek(0, SeekOrigin.Begin); - - return $"{responseBody}"; - } - } -} \ No newline at end of file diff --git a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Lion.AbpPro.Web.Blazor.Server.csproj b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Lion.AbpPro.Web.Blazor.Server.csproj index d3148418..09e5837f 100644 --- a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Lion.AbpPro.Web.Blazor.Server.csproj +++ b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Lion.AbpPro.Web.Blazor.Server.csproj @@ -1,5 +1,5 @@ - + net6.0 @@ -7,33 +7,18 @@ - - + - - - - - - - - + + - - - - - - - - - + diff --git a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Program.cs b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Program.cs index 74d6792b..69c1230b 100644 --- a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Program.cs +++ b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/Program.cs @@ -7,17 +7,47 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Serilog; +using Serilog.Events; namespace Lion.AbpPro.Web.Blazor.Server { public class Program { - public static void Main(string[] args) + public static int Main(string[] args) { - CreateHostBuilder(args).Build().Run(); + Log.Logger = new LoggerConfiguration() +#if DEBUG + .MinimumLevel.Debug() +#else + .MinimumLevel.Information() +#endif + .MinimumLevel.Override("Microsoft", LogEventLevel.Information) + .MinimumLevel.Override("Microsoft.EntityFrameworkCore", LogEventLevel.Warning) + .Enrich.FromLogContext() + .WriteTo.Async(c => c.File("Logs/logs.txt")) +#if DEBUG + .WriteTo.Async(c => c.Console()) +#endif + .CreateLogger(); + + try + { + Log.Information("Starting web host."); + CreateHostBuilder(args).Build().Run(); + return 0; + } + catch (Exception ex) + { + Log.Fatal(ex, "Host terminated unexpectedly!"); + return 1; + } + finally + { + Log.CloseAndFlush(); + } } - public static IHostBuilder CreateHostBuilder(string[] args) => + private static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { diff --git a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/appsettings.Development.json b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/appsettings.Development.json index 51737579..1fbe440c 100644 --- a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/appsettings.Development.json +++ b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/appsettings.Development.json @@ -1,10 +1,8 @@ { - "DetailedErrors": true, - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } + "ConnectionStrings": { + "Default": "Data Source=120.24.194.14;Port=3307;Database=LionAbpProDB;uid=root;pwd=1q2w3E*;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true" + }, + "Redis": { + "Configuration": "localhost,password=mypassword,defaultdatabase=1" } } diff --git a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/appsettings.json b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/appsettings.json index 80bf26d2..d9d9a9bf 100644 --- a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/appsettings.json +++ b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/appsettings.json @@ -1,60 +1,10 @@ { - "Serilog": { - "MinimumLevel": { + "Logging": { + "LogLevel": { "Default": "Information", - "Override": { - "Microsoft": "Information", - "Volo.Abp": "Information", - "Hangfire": "Information", - "DotNetCore.CAP": "Information", - "Serilog.AspNetCore": "Information" - } + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" } }, - "App": { - "SelfUrl": "http://localhost:44315", - "CorsOrigins": "https://*.AbpPro.com,http://localhost:4200,http://localhost:3100" - }, - "ConnectionStrings": { - "Default": "Data Source=120.24.194.14;Port=3307;Database=LionAbpProDB;uid=root;pwd=1ss*;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true" - }, - "Redis": { - "Configuration": "localhost,password=mypassword,defaultdatabase=1" - }, - "Jwt": { - "Audience": "LionAbpPro", - //客户端标识 - "SecurityKey": "dzehzRz9a8asdfasfdadfasdfasdfafsdadfasbasdf=", - "Issuer": "LionAbpPro", - //签发者 - "ExpirationTime": 24 - //过期时间 hour - }, - "Cap": { - "Enabled": "false", - "RabbitMq": { - "HostName": "localhost", - "UserName": "admin", - "Password": "admin" - } - }, - "ElasticSearch": { - "Enabled": "false", - "Url": "http://es.cn", - "IndexFormat": "companyname.projectname.development.{0:yyyy.MM.dd}", - "UserName": "elastic", - "Password": "aVVhjQ95RP7nbwNy", - "SearchIndexFormat": "companyname.projectname.development*" - }, - "HttpClient": { - "Sts": { - "Name": "Sts", - "Url": "http://localhost:44354" - } - }, - "Consul": { - "Enabled": false, - "Host": "http://localhost:8500", - "Service": "Project-Service" - } -} \ No newline at end of file + "AllowedHosts": "*" +} diff --git a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/tempkey.jwk b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/tempkey.jwk index 04bfd2cd..25404a45 100644 --- a/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/tempkey.jwk +++ b/aspnet-core/services/host/Lion.AbpPro.Web.Blazor.Server/tempkey.jwk @@ -1 +1 @@ -{"AdditionalData":{},"Alg":"RS256","Crv":null,"D":"PAgZOVLyS9SDqZAG-veT2mLtljxhIWaEMGGaesaCzp_8NSQSZD-ZKJCnht8zaG3I73PQ1Q3eFff11yLL80WP2v43LE-m735Rm-hWL7QCAIuSvPLgx4hwyKDs6KTYKFhiOjtjnMJP5g22ETR9yOeEswhjDvgcBdHcau0aQyELQnk9HtkS-TlaCykWjRy_uJ_mLrp8qNdrVQ3nvO62ps_W0x4F4gv8Kwi_dzaqz2PVm6ZidJrF8fi7k1JtL1lcvL1-ESGVna7sNsnvFxxw98FsjR4RYTxAzai9rDFd4IbSf0Rak671cf8OT0-R0oN5Ntv7_jRH07_TJBtAaBieDUbt-Q","DP":"cpUOYvSsJQvTtjSI_ZL6k4K7pNQNgKNnL6BranMysv-x0NDy_74do7-sllvvsoPv1JbIWcqAUSAZpdaXKd9073-H-G8twds5yNS957FlSFaayCwHlFLUmyy27GMuyucEtzHruMH_8ZPSTVnCJJITFzXAnFPAJVfx7T2L7MxITbs","DQ":"E4agTm5ODGyARTv-X01HYRS8K47gPjplsqA7TA1RhzXy4jvjx2WiYoim6ji3bpKBshpswbQdBrMbAGeeb2C9rYTCJP9TpTC3JTlOBG2ZDFMtsPoiTA4Fq7EUxJtTOTNv9F81atNy1DpAOgdahHPNr2eov824AiXdgPDEIwO1XKc","E":"AQAB","K":null,"KeyId":"976444C5D95614D7E51B38BA04ABAD68","Kid":"976444C5D95614D7E51B38BA04ABAD68","Kty":"RSA","N":"u0IUokDRXdT1IdhhzmpI42ZgFAG_MwAwoLacKdRyZ0-yqlhbiQEdH5SUvqZ4bcYp7iu42iN4ppCndISCZrX6yq5EaULienJnNPpx5x8K_0_-7yG5Tz1XbQZhDtBFLLlu79BnnsotFna6m3V46dC-NaA0iE_e1RvIsPCjLhLwkX9voyminkH3s7cW7PeUEFbmAM2Wry1qavKKLvg49nRpqUuZREIofvwVA6OK_NDzWJjrX9FE5XHOCYgq9dNmeZ0J-C9W-tBdio4FNNrmDfw9P75H42FmXWqA5txjpEO-IfV7X5gOfrGAWtMGkb5uFsLw4MdIMLp22wDXrEdb5cgzjQ","Oth":null,"P":"8qMb3guW5dYik2t3mdxzGJo-P70vJV7iBhFx_8YCL3MXLFWPhwtV2b8BBIdoYkwrHcZarcdB2QLCx-Usy4E8KvNMcDCfWqQOsOLEBpQWaf4GKRmysiRi8h9u5BFDtFAIlneMv4UfMGEK0h4WkV5AvqcJY5XtkC8s8yZVEZh23TM","Q":"xZIxw3kA29tZRnuJtwYnOPWTUb0JpejV8maaPFazOZEE3mUu4ynZCReTBqpB-k5ZHL0ytwheVmfbxrbLWnBeyjl0jEp9UCFfNkjuo2EDClMo_jbpCzKy9JttqwasRLg6zgwqSuTBBlO7FJNeapIWf2amsWeB1SaFyFw2sXVxLD8","QI":"DQt4wr2gqoSG7WIaupeNIvbDbes4BD3Fu7iH-oWvSZEpJqpZ8hlIVOPdWv2aPN7JDSGGIQpyX_VqTSp1cF6OZFdO4b7Nbdm0iB9eeQNI0E8GLcS54HFI2mJq-6bLNdeNwSIlCZzjkl8cqmnLZd_3cSymlFrJP_zbyLSA26qVVZQ","Use":null,"X":null,"X5t":null,"X5tS256":null,"X5u":null,"Y":null,"KeySize":2048,"HasPrivateKey":true,"CryptoProviderFactory":{"CryptoProviderCache":{},"CustomCryptoProvider":null,"CacheSignatureProviders":true,"SignatureProviderObjectPoolCacheSize":64}} \ No newline at end of file +{"alg":"RS256","d":"gUuQ6oykf8wOH1p8ZYIjXeo0RveSJfyddevgVlKp3GNp9r3dqqV_yNJlSgfqWPRkPEnjHS7n9gQ7-zUylPSbxgNIrtbWhMdH74WZFhGzSGxn9X9o8n7aVR4rsVzoUTzeFx7FPDt3-JfuVeJW6984AJktsCZZe5I14u0macrl4s17QvNGUYPQWb6bzkUWZjgRiGxrGheK7HOqe3wde0M9i2A-t0OGtfk8Qlq5I4bhRKpMJfyeFcxf1VtmNAsnZrqKEBo1L6z9VJrNl2lf_IF7-QB2sCz6gWaGH7GKG88ybRA-_W8ysetPnGKMDi9Zg9wQMDSLuFlus-2Emk0KO_SS7Q","dp":"GcocMxoDIwCZgfqN7WdTof9YMoWwZIcHZWJadukLP2c19HdHXsaRocfKHgl5q2LLyR8KU9DQfNjAfIQcPiv1-la20ApxiejbR8ENfuaZCLceX9YTkfim3wOKZXBXCsK0K9b3ck8YWovQdIDtuMluXFxm1tdpIQHZPMicRHnWn8U","dq":"Ue1fXgcC2gupLdcQMz6UJ-aspi5qkxDrTCOpXMkj352jT2UT0NvkaiPFfrOCjtF47BIQATLQzJXC1dkRo3YwYM_RdF05JZqLkfppz1n_2B2j8jWbkRQAnVZO4kxVp5HxAJL_aLkMQVJrSk6to84wkcIox3M5Ef8hUnH-V_7gba0","e":"AQAB","kid":"B7C6A0AA3146A664EDE402E4FD323B04","kty":"RSA","n":"vRrzOGoq4qSyqGpU3OhBZ4Ch5OhNdMlfn7T86_hBCG8lONPeS6AxcX4VeO_W9je1u6vsC16HyKEfNSrgOujE0jcZ-nSc50cyC8QyxsanTeKrwlzxoYPV3BcQF1vWPN_h8uYjfujy2ruOYzIC_rFHJ_VurUHAGpNlVyX-ivZiCSfScIeFrlBjJM3CbcHZCG7vDsssX6ZLNvmdHzBwEEKFWOczKpX3pjJplD1F57ljPcdl3y6lAHxGJBUZT3wl9njVLNvg6P73LMACZOq9FPKCmYUly0_kKoriX-EQ8sQXxW3jT0n2r--niHPFxFo0lKrDzVtzIzvrv7ybL8NrAva_BQ","p":"5lSinXyf0T4L85UacVs7AUo_AEZvBIPeqZx_T7v54CEewksSJKENVsdFNaROmGb1Cuncy0p1jpdQ6Xvf-9IYFRiH4DobXReOJobYtzqtbwPyAj-c7EMDIM7b0lLodHGN8FcxPCn1CHLQE5W-DckgyVLu4Qd2-pd8xw8tdevfrls","q":"0i4meaPvQVfMJUfzwdtRDkdGnhWIcVBfiDeIO1mn3JSVKjujTcf5fJCKjpdAa06AxF0yhOiXMWPI4Tvw-T54XSiRd_rYH8ix8Mmpy7pTMldOBehytXVdT2qv7-sTTLziV7R7BEYJmpzlptTjdvL_Drfkra-3Qj3iO6OSq1Vnhh8","qi":"1P1Wl2lvf3Cz8il6XuUBcWI8NVMyfCSwYshl-u5C5NDa1aAs16GI7Bd2TQjS06OmVRyr3nSTj1-0qc3hWKVJWZ9qYPMpC1AaNhKXPshMALUpqwPi9pKL4C0W6QKKIA9xtVZjsEr-v3v0r8cPtJNAkCQAAkX_eLqgbdWsY2DVBO0"} \ No newline at end of file diff --git a/aspnet-core/services/src/Lion.AbpPro.Blazor.Layout.AntDesignTheme/Pages/Identity/Users/User.razor.cs b/aspnet-core/services/src/Lion.AbpPro.Blazor.Layout.AntDesignTheme/Pages/Identity/Users/User.razor.cs index f86fca14..8b8e74f2 100644 --- a/aspnet-core/services/src/Lion.AbpPro.Blazor.Layout.AntDesignTheme/Pages/Identity/Users/User.razor.cs +++ b/aspnet-core/services/src/Lion.AbpPro.Blazor.Layout.AntDesignTheme/Pages/Identity/Users/User.razor.cs @@ -1,17 +1,15 @@ using System.Threading.Tasks; using Lion.AbpPro.Users; using Lion.AbpPro.Users.Dtos; +using Microsoft.AspNetCore.Components; namespace Lion.AbpPro.Blazor.Layout.AntDesignTheme.Pages.Identity.Users; public partial class User { - private readonly IAccountAppService _accountAppService; + [Inject] protected IAccountAppService _accountAppService { get; set; } + - public User(IAccountAppService accountAppService) - { - _accountAppService = accountAppService; - } protected override async Task OnInitializedAsync() { diff --git a/aspnet-core/services/src/Lion.AbpPro.DbMigrator/appsettings.json b/aspnet-core/services/src/Lion.AbpPro.DbMigrator/appsettings.json index 7571d378..738a223d 100644 --- a/aspnet-core/services/src/Lion.AbpPro.DbMigrator/appsettings.json +++ b/aspnet-core/services/src/Lion.AbpPro.DbMigrator/appsettings.json @@ -1,5 +1,5 @@ { "ConnectionStrings": { - "Default": "Data Source=localhost;Database=LionAbpProDB;uid=root;pwd=123456;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true" + "Default": "Data Source=localhost;Database=LionAbpProDB;uid=root;pwd=1q2w3E*;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true" } } \ No newline at end of file