Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么管理员将状态更改为活动后我无法登录_C#_Asp.net Core Mvc_Identity - Fatal编程技术网

C# 为什么管理员将状态更改为活动后我无法登录

C# 为什么管理员将状态更改为活动后我无法登录,c#,asp.net-core-mvc,identity,C#,Asp.net Core Mvc,Identity,我正在创建登录和注册应用程序,我想通过添加新字段isActive来限制对应用程序的登录 [Display(Name = "Aktivan/Neaktivan")] public bool Aktivan { get; set; } 一旦用户注册,其状态将自动变为false ApplicationUser user = new() { UserName = Input.Email,

我正在创建登录和注册应用程序,我想通过添加新字段isActive来限制对应用程序的登录

 [Display(Name = "Aktivan/Neaktivan")]
        public bool Aktivan { get; set; }
一旦用户注册,其状态将自动变为false

ApplicationUser user = new()
                {
                    UserName = Input.Email,
                    Email = Input.Email,
                    ClientId = Input.ClientId,
                    StreetAddress = Input.StreetAddress,
                    City = Input.City,
                    PostalCode = Input.PostalCode,
                    Name = Input.Name,
                    PhoneNumber = Input.PhoneNumber,
                    Role = Input.Role,
                    Aktivan = false
                };
在我将此状态更改为true之后,用户应该能够在应用程序中登录。 到目前为止我做了什么

 public async Task<IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl ??= Url.Content("~/");

            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();

            if (ModelState.IsValid)
            {
                ApplicationUser user = new()
                {
                    Email = Input.Email,
                    PasswordHash = Input.Password,
                };

                var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: false);

                if (result.Succeeded && user.Aktivan)
                {
                    _logger.LogInformation("User logged in.");
                    //return LocalRedirect(returnUrl);
                    return RedirectToAction("Index", "Ticket", new { area = "Manager" });
                }

                if (result.RequiresTwoFactor)
                {
                    return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, Input.RememberMe });
                }

                if (result.IsLockedOut)
                {
                    _logger.LogWarning("User account locked out.");
                    return RedirectToPage("./Lockout");
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Pogresno ste unijeli username ili password!");
                    return Page();
                }
            }

            // If we got this far, something failed, redisplay form
            return Page();
        }
    }
PostAsync上的公共异步任务(字符串returnUrl=null) { returnUrl???=Url.Content(“~/”); ExternalLogins=(wait _signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); if(ModelState.IsValid) { ApplicationUser用户=新建() { Email=Input.Email, PasswordHash=Input.Password, }; var result=wait _signInManager.PasswordSignInAsync(Input.Email、Input.Password、Input.RememberMe、lockoutOnFailure:false); if(result.successed&&user.Aktivan) { _logger.LogInformation(“用户登录”); //返回LocalRedirect(returnUrl); 返回重定向到操作(“索引”、“票证”、新{area=“Manager”}); } if(结果要求系数) { return RedirectToPage(“./LoginWith2fa”,新的{ReturnUrl=ReturnUrl,Input.RememberMe}); } 如果(结果IsLockedOut) { _logger.LogWarning(“用户帐户锁定”); 返回重定向Topage(“/锁定”); } 其他的 { AddModelError(string.Empty,“Pogresno ste unijeli username ili password!”); 返回页(); } } //如果我们走到这一步,有些东西失败了,重新显示形式 返回页(); } } 一旦我将状态更改为
True
,它仍然显示状态为
false
,并且我无法登录到应用程序。 我试图找出我做错了什么,但我找不到任何错误。谁能告诉我这里怎么了?我做错了什么?
我使用
ASP.NET核心MVC标识

您正在创建
ApplicationUser
的新实例,但仅使用字段登录,上面的代码中没有任何内容是根据我看到的设置
Aktivan
属性;默认为false。嗯,对不起,我是这个领域的新手,我不知道怎么做。我所做的一切都在上面的代码中。
如果(result.successed&&user.Aktivan)
请检查条件,因为
用户
是一个新实例(它不是数据库中的当前用户),
Aktivan
将是默认值:
false
,这将导致活动用户无法登录应用程序。登录成功后,尝试访问数据库并根据用户名查找当前用户,然后根据用户的
Aktivan
属性登录应用程序。@ZhiLv谢谢您的建议,我找到了问题所在。