asp.net5.0项目的创建常用的配置

asp.net5.0项目

1.autofac:引用Autofac.Extensions.DependencyInjection
	
program:
    public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                }).UseServiceProviderFactory(new AutofacServiceProviderFactory());	


stateup:
  public void ConfigureContainer(ContainerBuilder builder)
        {
            var assemblysServices = Assembly.Load("Show.Repository");
            var assemblysServices1 = Assembly.Load("Show.Service");
            builder.RegisterAssemblyTypes(assemblysServices, assemblysServices1).AsImplementedInterfaces().InstancePerLifetimeScope();
        }

2.autoMapper:引用AutoMapper.Extensions.Microsoft.DependencyInjection



stateup:
	services.AddAutoMapper(x =>x.CreateMap<Depatment, DepatmentDto>());
            services.AddAutoMapper(x =>x.CreateMap<DeptRoleDto, DeptRole>());


repository:
	mapper.Map<DeptRole>(deptRoleDto);
or
	DB.Depatment.ProjectTo<DepatmentDto>(mapper.ConfigurationProvider).ToList();

3.自引用循环:引用Microsoft.AspNetCore.Mvc.NewtonsoftJson

services.AddControllers().AddNewtonsoftJson(options =>
            {
                //自引用循环
                options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
                //json数据的时间格式
                options.SerializerSettings.DateFormatString = "yyyy-MM-dd";
                //大小写
                options.SerializerSettings.ContractResolver = new DefaultContractResolver();
            });

4.jwt
引用:Microsoft.AspNetCore.Authentication.JwtBearer

应用Jwt

var authClaims = new List<Claim> {
                    new Claim(JwtClaimTypes.Id,result.Assess)
                    };

                    IdentityModelEventSource.ShowPII = true;

                    //签名秘钥 可以放到json文件中
                    var authSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtConfig:Key"]));

                    var token = new JwtSecurityToken(
                           issuer: configuration["JwtConfig:Issuer"],
                           audience: configuration["JwtConfig:Audienc"],
                           expires: DateTime.Now.AddHours(10),
                           claims: authClaims,
                           signingCredentials: new SigningCredentials(authSigningKey, SecurityAlgorithms.HmacSha256));

                    var handler = new JwtSecurityTokenHandler().WriteToken(token);
                    return new MessageDto() { code = 0, Message = handler };

Api:
using Microsoft.AspNetCore.Authorization;
[Authorize]

SetUp配置:
 //jwt
            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(options =>
            {
                options.SaveToken = true;
                options.RequireHttpsMetadata = false;
                options.TokenValidationParameters = new TokenValidationParameters()
                {
                    ValidateIssuer = true,
                    ValidateAudience = true,
                    ValidateIssuerSigningKey = true,

                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JwtConfig:Key"])),
                    ValidAudience = Configuration["JwtConfig:Audienc"],
                    ValidIssuer = Configuration["JwtConfig:Issuer"],

                    ValidateLifetime = true,//验证生命周期
                    RequireExpirationTime = true,//过期时间
                    ClockSkew = TimeSpan.Zero
                };
            });

中间件:
app.UseAuthentication();

  

posted @ 2022-03-18 22:18  电器小君子  阅读(107)  评论(0)    收藏  举报