足力健后端,使用.netcore版本,合并1个项目使用

Startup.cs 6.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IdentityModel.Tokens.Jwt;
  4. using System.IRepositories;
  5. using System.Linq;
  6. using System.Repositories;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Common;
  10. using Microsoft.AspNetCore.Authentication.JwtBearer;
  11. using Microsoft.AspNetCore.Authorization;
  12. using Microsoft.AspNetCore.Builder;
  13. using Microsoft.AspNetCore.Hosting;
  14. using Microsoft.AspNetCore.HttpsPolicy;
  15. using Microsoft.AspNetCore.Mvc;
  16. using Microsoft.Extensions.Configuration;
  17. using Microsoft.Extensions.DependencyInjection;
  18. using Microsoft.Extensions.Logging;
  19. using Microsoft.Extensions.Options;
  20. using Microsoft.IdentityModel.Tokens;
  21. using NLog.Extensions.Logging;
  22. using NLog.Web;
  23. using SignToken;
  24. using Steeltoe.Discovery.Client;
  25. namespace TVShoppingCallCenter_ZLJ
  26. {
  27. public class Startup
  28. {
  29. public Startup(IConfiguration configuration)
  30. {
  31. Configuration = configuration;
  32. }
  33. public IConfiguration Configuration { get; }
  34. // This method gets called by the runtime. Use this method to add services to the container.
  35. public void ConfigureServices(IServiceCollection services)
  36. {
  37. #region Cors 配置
  38. services.AddCors(options =>
  39. {
  40. options.AddPolicy("Cors",
  41. builder => builder.AllowAnyOrigin()//builder.WithOrigins(Configuration["Cors"].Split(','))
  42. .AllowAnyMethod()
  43. .AllowAnyHeader()
  44. .AllowCredentials().SetPreflightMaxAge(TimeSpan.FromMinutes(30)));
  45. });
  46. #endregion
  47. #region 授权配置
  48. //读取jwt配置文件
  49. var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Jwt:SecretKey"].ToString()));
  50. var tokenValidationParameters = new TokenValidationParameters
  51. {
  52. ValidateIssuerSigningKey = true,
  53. IssuerSigningKey = signingKey,
  54. ValidateIssuer = true,
  55. ValidIssuer = Configuration["Jwt:Issuer"].ToString(),//发行人
  56. ValidateAudience = true,
  57. ValidAudience = Configuration["Jwt:Audience"].ToString(),//订阅人
  58. ValidateLifetime = true,
  59. ClockSkew = TimeSpan.Zero,
  60. RequireExpirationTime = true,
  61. };
  62. services.AddAuthentication(options =>
  63. {
  64. options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
  65. options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
  66. })
  67. .AddJwtBearer(o =>
  68. {
  69. o.RequireHttpsMetadata = false;
  70. o.TokenValidationParameters = tokenValidationParameters;
  71. o.Events = new JwtBearerEvents
  72. {
  73. OnTokenValidated = context =>
  74. {
  75. if (context.Request.Path.Value.ToString() == "/api/logout")
  76. {
  77. var token = ((context as TokenValidatedContext).SecurityToken as JwtSecurityToken).RawData;
  78. }
  79. return Task.CompletedTask;
  80. }
  81. };
  82. });
  83. #endregion
  84. #region 配置数据库
  85. BaseContext.DB_ConnectionString = Configuration.GetConnectionString("DefaultConnection");
  86. #endregion
  87. #region redis配置
  88. services.AddDistributedRedisCache(options =>
  89. {
  90. options.InstanceName = Configuration["Redis:InstanceName"].ToString();
  91. options.Configuration = $"{Configuration["Redis:HostName"].ToString()}:{Configuration["Redis:Port"].ToString()},allowAdmin=true,password={Configuration["Redis:Password"].ToString()},defaultdatabase={Configuration["Redis:Defaultdatabase"].ToString()}";
  92. });
  93. #endregion
  94. #region 注入
  95. services.AddSingleton<IConfiguration>(Configuration);
  96. //services.AddSingleton<IAuthorizationHandler, PermissionAuthorizationHandler>();
  97. //services.AddSingleton<IPermissionService, PermissionService>();
  98. services.AddTransient<ISys_UserAccountRepository, Sys_UserAccountRepository>();
  99. services.AddTransient<ISys_RoleInfoRepository, Sys_RoleInfoRepository>();
  100. services.AddTransient<ISys_SeatGroupRepository, Sys_SeatGroupRepository>();
  101. services.AddTransient<ISys_LoginLogsRepository, Sys_LoginLogsRepository>();
  102. services.AddTransient<ISys_DepartmentRepository, Sys_DepartmentRepository>();
  103. services.AddTransient<ISys_DictionaryValueRepository, Sys_DictionaryValueRepository>();
  104. services.AddTransient<ISys_ModuleButtonInfoRepository, Sys_ModuleButtonInfoRepository>();
  105. services.AddTransient<ISys_ModuleInfoRepository, Sys_ModuleInfoRepository>();
  106. services.AddTransient<ISys_RoleFunctionRepository, Sys_RoleFunctionRepository>();
  107. services.AddTransient<ISys_SeatPermissionConfigRepository, Sys_SeatPermissionConfigRepository>();
  108. services.AddTransient<ISys_SystemConfigRepository, Sys_SystemConfigRepository>();
  109. services.AddTransient<IBus_ProductClassRepository, Bus_ProductClassRepository>();
  110. services.AddTransient<IBus_ProductRepository, Bus_ProductRepository>();
  111. services.AddTransient<ICus_VipInfoRepository, Cus_VipInfoRepository>();
  112. services.AddTransient<ICus_VipLabelInfoRepository, Cus_VipLabelInfoRepository>();
  113. #endregion
  114. //services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
  115. services.AddMvc(options =>
  116. {
  117. options.Filters.Add(new ActionFilter());
  118. options.Filters.Add(new ExceptionFilter());
  119. }).AddJsonOptions(op => op.SerializerSettings.ContractResolver =
  120. new Newtonsoft.Json.Serialization.DefaultContractResolver());
  121. #region steeltoe
  122. //services.AddDiscoveryClient(Configuration);
  123. #endregion
  124. }
  125. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
  126. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
  127. {
  128. app.UseCors("Cors");
  129. app.UseDeveloperExceptionPage();
  130. app.UseDatabaseErrorPage();
  131. app.UseBrowserLink();
  132. //app.UseHttpsRedirection();
  133. //引入授权
  134. app.UseAuthentication();
  135. app.UseMvc();
  136. #region steeltoe
  137. //app.UseDiscoveryClient();
  138. #endregion
  139. #region Nlog 引入
  140. loggerFactory.AddNLog();//添加NLog
  141. env.ConfigureNLog("nlog.config");//读取Nlog配置文件
  142. app.AddNLogWeb();
  143. #endregion
  144. }
  145. }
  146. }