PasswordSignInAsyn c работает неправильно (удостоверение) - PullRequest
0 голосов
/ 02 мая 2020

Я проверяю мой Login() метод в почтальоне, и он всегда возвращает false.

В моей БД есть пользователь с электронной почтой: 111@ukr.net, имя пользователя: 111@ukr.net, пароль: 111111.

Когда я использую CheckPasswordAsync для этого пользователя, я получаю значение true.

Когда я пытаюсь передать объекту user вместо имени пользователя в параметре, я тоже получаю значение false.

My post post

        [HttpPost]
        public async Task<IActionResult> Login()//[FromBody]UserModel model)
        {
            var result = await _signInManager.PasswordSignInAsync
                ("111@ukr.net", "111111", false, false);

            //var user = await _userManager.FindByEmailAsync("111@ukr.net"); 
            //var result1 = await _userManager.CheckPasswordAsync  
            //    (user, "111111");

            //var result = await _signInManager.PasswordSignInAsync
            //     (user, "111111", false, false);
            if (result.Succeeded == true)
            {
                return Ok(result);
            }
            else
            {
                return BadRequest(result);
            }
        }

В почтальоне я всегда получаю

{
    "succeeded": false,
    "isLockedOut": false,
    "isNotAllowed": true,
    "requiresTwoFactor": false
}

код из моего Startup.cs

public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            services.AddDbContext<ApplicationContext>();
            services.AddIdentity<User, IdentityRole>(opts =>
            {
                opts.SignIn.RequireConfirmedAccount = true;
                opts.Password.RequiredLength = 6; 
                opts.Password.RequireNonAlphanumeric = false;  
                opts.Password.RequireLowercase = false;
                opts.Password.RequireUppercase = false; 
                opts.Password.RequireDigit = false; 
            })
                .AddEntityFrameworkStores<ApplicationContext>();
            services.AddTransient<IUnitOfWork, EFUnitOfWork>();
            services.AddTransient<ITestService, TestService>();
            services.AddTransient<IQuestionService, QuestionService>();
            services.AddTransient<IAnswerService, AnswerService>();
            services.AddTransient<IUserService, UserService>();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseAuthentication();
            app.UseAuthorization();

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }

1 Ответ

1 голос
/ 02 мая 2020

Эта строка кода нарушает ваш код:

opts.SignIn.RequireConfirmedAccount = true;

Эта конфигурация не позволит вам войти в систему с неподтвержденной учетной записью, которая, как мне кажется, является.

...