.net core 简单集成JWT报No authenticationScheme was specified, and there was no DefaultChallengeScheme found错误

时间:2019-10-10
本文章向大家介绍.net core 简单集成JWT报No authenticationScheme was specified, and there was no DefaultChallengeScheme found错误,主要包括.net core 简单集成JWT报No authenticationScheme was specified, and there was no DefaultChallengeScheme found错误使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
           #region JWT 认证
            services
              .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
              //.AddCustomAuth(o => { })
              .AddJwtBearer(options => {
                  options.TokenValidationParameters = new TokenValidationParameters {
                      ValidIssuer = Configuration["JwtSetting:Issuer"],
                      ValidAudience = Configuration["JwtSetting:Audience"],
                      IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["JwtSetting:SecurityKey"])),
                      // 默认允许 300s  的时间偏移量,设置为0
                      ClockSkew = TimeSpan.Zero
                  };
              });
            #endregion
            #region MVC修改控制器描述
            services.AddHttpContextAccessor();
            services.Replace(ServiceDescriptor.Transient<IControllerActivator, ServiceBasedControllerActivator>());
            services.AddMvc(config => {
                config.RespectBrowserAcceptHeader = true;
                //注入MVC拦截器
                config.Filters.Add<ApiFilter>();
            })
            .AddJsonOptions(options => options.SerializerSettings.ContractResolver = new ContractResolver())
            .AddJsonOptions(options => options.SerializerSettings.Converters.Add(new ChinaDateTimeConverter()))
            .AddFormatterMappings(options => options.SetMediaTypeMappingForFormat("xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"))
            .AddFormatterMappings(options => options.SetMediaTypeMappingForFormat("jpeg", "image/jpeg"))
            .AddFormatterMappings(options => options.SetMediaTypeMappingForFormat("jpg", "image/jpeg"));
       #endregion

在ConfigureServices中  注册JWT必须在注册MVC之前 否则就会报No authenticationScheme was specified, and there was no DefaultChallengeScheme found错误

            app.UseAuthentication();
            app.UseMvc();

在Configure中  添加JWT验证也必须在MVC之前,否则也会报错。

原文地址:https://www.cnblogs.com/wsprince/p/11649421.html