Проблема Создание запуска для регистрации и входа в систему с API? Visual Studio - PullRequest
0 голосов
/ 07 июля 2019

Я делаю тест и хочу добавить логин и зарегистрироваться.Все мои вызовы API работают, но когда я хочу добавить имя входа с помощью jtbbearer, я получаю следующую ошибку:

System.ArgumentNullException: 'Ссылка на строку не установлена ​​для экземпляра строки.Arg_ParamName_Name '

Код:

namespace QuizApi
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
            services.AddDbContext<ApplicationDbContext>(options =>
               options.UseMySql(
                   Configuration.GetConnectionString("DefaultConnection")));
            services.AddScoped<ProjectDataInitializer>();
            services.AddScoped<IQuizRepository, QuizRepository>();
            services.AddScoped<IScoreRepository, ScoreRepository>();
            services.AddScoped<ISpelerRepository, SpelerRepository>();
            services.AddOpenApiDocument(c =>
                     {
                          c.DocumentName = "apidocs";
                          c.Title = "Quiz API";
                          c.Version = "v1";
                          c.Description = "The Quiz API documentation description.";
                          c.DocumentProcessors.Add(new SecurityDefinitionAppender("JWT Token", new SwaggerSecurityScheme { Type = SwaggerSecuritySchemeType.ApiKey, Name = "Authorization", In = SwaggerSecurityApiKeyLocation.Header, Description = "Copy 'Bearer' + valid JWT token into field" })); c.OperationProcessors.Add(new OperationSecurityScopeProcessor("JWT Token"));
                  });
            services.AddIdentity<IdentityUser, IdentityRole>(cfg => cfg.User.RequireUniqueEmail = true).AddEntityFrameworkStores<ApplicationDbContext>();
            services.AddAuthentication(x =>
                     {
                          x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                          x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                     })
                    .AddJwtBearer(x =>
                    {
                         x.RequireHttpsMetadata = false;
                         x.SaveToken = true;
                         x.TokenValidationParameters = new TokenValidationParameters
                                                       {
                                                             ValidateIssuerSigningKey = true,
                                                            IssuerSigningKey = new  SymmetricSecurityKey(Encoding.UTF8.GetBytes(Configuration["Tokens:Key"])),
                                                            ValidateIssuer = false,
                                                            ValidateAudience = false
                                                       };
              });
            // for OpenAPI 3.0 else AddSwaggerDocument();
            services.Configure<IdentityOptions>(options =>
                      {
                           // Password settings.
                           options.Password.RequireDigit = false;
                           options.Password.RequireLowercase = false;
                           options.Password.RequireNonAlphanumeric = false;
                           options.Password.RequireUppercase = false;
                           options.Password.RequiredLength = 8;
                           options.Password.RequiredUniqueChars = 1;

                           // Lockout settings.
                           options.Lockout.DefaultLockoutTimeSpan = TimeSpan.FromMinutes(5);
                           options.Lockout.MaxFailedAccessAttempts = 5;
                           options.Lockout.AllowedForNewUsers = true;

                           // User settings.
                           options.User.AllowedUserNameCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._@+";
                           options.User.RequireUniqueEmail = true;
                      });
            services.AddCors(options => options.AddPolicy("AllowAllOrigins", builder => builder.AllowAnyOrigin()));
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env, ProjectDataInitializer ProjectDataInitializer)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseAuthentication();
            app.UseMvc();
            app.UseSwaggerUi3();
            app.UseSwagger();

            ProjectDataInitializer.InitializeDataAsync().Wait();
        }
    }
}

Я ожидаю, что пользователь зарегистрирован или может войти в систему

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...