Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.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# 当您错误输入密码时,向用户显示一条消息ASP.NET Core 3.0 MVC_C#_Asp.net Core_Asp.net Core Identity - Fatal编程技术网

C# 当您错误输入密码时,向用户显示一条消息ASP.NET Core 3.0 MVC

C# 当您错误输入密码时,向用户显示一条消息ASP.NET Core 3.0 MVC,c#,asp.net-core,asp.net-core-identity,C#,Asp.net Core,Asp.net Core Identity,如果用户输入的密码不正确,则会出现以下消息: 无效的登录尝试 但当用户未验证其电子邮件时,也会显示此消息。如何向用户显示每种情况的消息 if (ModelState.IsValid) { // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, set lockoutOnFailure: true

如果用户输入的密码不正确,则会出现以下消息:

无效的登录尝试

但当用户未验证其电子邮件时,也会显示此消息。如何向用户显示每种情况的消息

if (ModelState.IsValid)
{
    // This doesn't count login failures towards account lockout
    // To enable password failures to trigger account lockout, set lockoutOnFailure: true
    var result = await _signInManager.PasswordSignInAsync(Input.Email, Input.Password, Input.RememberMe, lockoutOnFailure: true);
    if (result.Succeeded)
    {
        _logger.LogInformation("User logged in.");
        return LocalRedirect(returnUrl);
    }

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

    if (result.IsLockedOut)
    {
        _logger.LogWarning("User account locked out.");
        return RedirectToPage("./Lockout");
    }
    else
    {
        ModelState.AddModelError(string.Empty, "Invalid login attempt.");
        return Page();
    }
}
例如,它通过
UserManager

    public virtual async Task<SignInResult> PasswordSignInAsync(string userName, string password,
        bool isPersistent, bool lockoutOnFailure)
    {
        var user = await UserManager.FindByNameAsync(userName);
        if (user == null)
        {
            return SignInResult.Failed;
        }

        return await PasswordSignInAsync(user, password, isPersistent, lockoutOnFailure);
    }
公共虚拟异步任务密码SigninaSync(字符串用户名、字符串密码、,
bool Ispersist,bool LockoutOn故障)
{
var user=await UserManager.FindByNameAsync(用户名);
if(user==null)
{
返回信号结果失败;
}
return wait PasswordSignInAsync(用户、密码、ispersist、lockoutOnFailure);
}
您可以添加这些逻辑来标识用户名或密码是否无效

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

        if (ModelState.IsValid)
        {
            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, set lockoutOnFailure: true
            var result = await _signInManager.PasswordSignInAsync(LoginInput.Email, LoginInput.Password, LoginInput.RememberMe, lockoutOnFailure: true);
            if (result.Succeeded)
            {
                _logger.LogInformation("User logged in.");
                return LocalRedirect(returnUrl);
            }
            if (result.RequiresTwoFactor)
            {
                return RedirectToPage("./LoginWith2fa", new { ReturnUrl = returnUrl, RememberMe = LoginInput.RememberMe });
            }
            if (result.IsLockedOut)
            {
                _logger.LogWarning("User account locked out.");
                return RedirectToPage("./Lockout");
            }
            else
            {
                var user = await _userManager.FindByNameAsync(LoginInput.Email);
                if (user == null)
                {
                    ModelState.AddModelError(string.Empty, "Invalid UserName.");
                }
                else if (!await _userManager.CheckPasswordAsync(user, LoginInput.Password))
                {
                    ModelState.AddModelError(string.Empty, "Invalid Password.");
                }
                return Page();
            }
        }

        // If we got this far, something failed, redisplay form
        return Page();
    }
PostAsync上的公共异步任务(字符串returnUrl=null) { returnUrl=returnUrl??Url.Content(“~/”); if(ModelState.IsValid) { //这不会将登录失败计入帐户锁定 //要启用密码故障触发帐户锁定,请设置lockoutOnFailure:true var result=wait _signInManager.PasswordSignInAsync(LoginInput.Email,LoginInput.Password,LoginInput.RememberMe,lockoutOnFailure:true); if(result.successed) { _logger.LogInformation(“用户登录”); 返回LocalRedirect(returnUrl); } if(结果要求系数) { return RedirectToPage(“./LoginWith2fa”,新的{ReturnUrl=ReturnUrl,RememberMe=LoginInput.RememberMe}); } 如果(结果IsLockedOut) { _logger.LogWarning(“用户帐户锁定”); 返回重定向Topage(“/锁定”); } 其他的 { var user=await\u userManager.FindByNameAsync(LoginInput.Email); if(user==null) { AddModelError(string.Empty,“无效用户名”); } 如果(!await_userManager.CheckPasswordAsync(user,LoginInput.Password)) { AddModelError(string.Empty,“无效密码”); } 返回页(); } } //如果我们走到这一步,有些东西失败了,重新显示形式 返回页(); }
小心不要透露太多信息。