我的 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();
}
代码有问题还是数据库本身有问题?
谢谢你的时间。
当我尝试使用我的 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的更多详细信息,请登录您可以在这里查看我们的官方文档