gpt4 book ai didi

asp.net-core - 支持在 ASP.NET Core 中使用电子邮件或用户名登录同一用户

转载 作者:行者123 更新时间:2023-12-05 08:23:05 25 4
gpt4 key购买 nike

我将 ASP.NET Core Identity (2.0) 与所有默认代码一起使用。我更改了 AccountController.Login 方法来检查遗留数据库并在找不到用户时迁移用户。由于旧数据库同时包含用户名和电子邮件,因此我将在新创建的用户中填充这两个字段。

但是,如果我尝试使用已迁移的用户再次登录,则使用电子邮件不起作用,因为 SQL 请求似乎总是只查找 WHERE u.NormalizedUserName = @__normalizedUserName_0 .

如何让电子邮件地址和用户名不同的单个用户使用他们的用户名或电子邮件地址登录?

最佳答案

您可以使用 UserManager 中的 CheckPasswordAsync(user, password) 方法:https://github.com/aspnet/Identity/blob/a273e349eea2be3a40b16e6947b2deab95f4b5b2/src/Core/UserManager.cs#L692

在调用该方法之前,您可以通过以下方式获取您的用户:

 var user = await _userManager.FindByNameAsync(userName) ?? await _userManager.FindByEmailAsync(userName);

根据您当前的 UserStore 实现,您可能需要调整 FindByNameAsyncFindByEmailAsync 或两者。

关于asp.net-core - 支持在 ASP.NET Core 中使用电子邮件或用户名登录同一用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50825753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com