尝试访问有效帐户 ASP.NET Core 时登录尝试无效

问题描述 投票:0回答:1

我的 PC 上有我的 ASP.NET Core 项目,那里的一切都运行良好。

最近我将我的 SQL 数据库从 PC 转移到我的笔记本电脑上,看看如果我将我的项目发送给某人会发生什么。我有两个数据库,但在这个问题中,我想关注存储用户信息的数据库。

当我尝试使用我的 PC 上的帐户登录时,一切正常,我能够登录到我的帐户,但是当我尝试在我的笔记本电脑上执行相同操作时,我得到

Invalid Login Attempt
,这是我检查登录的功能:

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

    ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
        
    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: false);

        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();
        }
    }

    // If we got this far, something failed, redisplay form
    return Page();
}

代码有问题还是数据库本身有问题?

谢谢你的时间。

c# asp.net-core asp.net-core-identity
1个回答
0
投票

当我尝试使用我的 PC 上的帐户登录时,一切正常,并且 我可以登录到我的帐户,但是当我尝试在我的帐户上执行相同操作时 笔记本电脑我收到无效的登录尝试。

根据您共享的代码片段,在您的登录 OnPostAsync 方法中,结果变量似乎返回

IsNotAllowed
属性值为 true 或除 Succeeded、RequiresTwoFactor 或 IsLockedOut 以外的任何其他内容,对于这些情况,您将首先获得“无效登录尝试”的意思三个条件都失败了。

我已经成功复现了你的问题,你可以看下面:

代码或数据库有问题 本身?

可能的原因:

可能由于多种原因而遇到。请仔细检查项目中的以下配置:

1. 检查正确的数据库连接字符串:

正如您所说,您有两个数据库,请确保您连接到项目中的正确数据库。在您的 appsetting.json 文件中,仔细检查以下值是否正确。

2. 确保您有正确的用户:

您尝试登录的用户确保在您的数据库表中,该表可以在 AspNetUser 表中找到。

3. 检查 AspNetUsers 表 EmailConfirmed 值:

在 AspNetUsers 表中,您会看到一列 EmailConfirmed。它对您的场景非常重要。如果在这种情况下将其设置为 true 如果您在登录前未验证您的电子邮件,则登录尝试将失败。

4. Program.cs文件中的RequireConfirmedAccount值:

在您的 program.cs 文件中,您为 RequireConfirmedAccount 设置了什么值,它与“无效登录尝试”相关。如果您设置为 true,则意味着您需要在登录前验证您的帐户,但您也可以将其设置为 false。你可以这样做:

builder.Services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = false)
    .AddEntityFrameworkStores<ApplicationDbContext>();

注意: 它将允许您在不验证电子邮件帐户的情况下登录。

5. 检查是否得到结果。成功 = 真:

除非您没有得到结果,否则您的登录将不会被验证。成功 = true 如下:

注意:如果仍然遇到同样的问题并想了解有关identity的更多详细信息,请登录您可以在这里查看我们的官方文档

© www.soinside.com 2019 - 2024. All rights reserved.