C# 为什么管理员将状态更改为活动后我无法登录
我正在创建登录和注册应用程序,我想通过添加新字段isActive来限制对应用程序的登录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,
[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谢谢您的建议,我找到了问题所在。