Asp 核心通过身份添加新的用户注册方式

Asp Core adding a new way of user registration via Identity

我有一个问题,我在 Asp Net Core 1.1.0 上有 Web 应用程序,它具有已实现的经典身份模型和用于授权的 OpenIddict。

在使用电子邮件/密码注册用户时的经典实现中,我需要意识到还可以使用 CodeNumber(15 个字符的数字序列长度)作为登录名和 pin 码(4 个字符的数字组合)进行注册) 作为密码。

CodeNumber 和 PinCode 将与用户身份分开存储 table。

方便用户使用两种方式登录系统

请告诉我如何在 Asp .Net Core 中实现? 提前谢谢你。

简单来说,Identity 开箱即用的方式是通过用户名查询用户,然后通过比较密码自动登录。要以不同的方式处理事情,您只需要对该过程进行更多的手动控制。而不是使用像 UserManager.FindByNameAsync 这样的东西,你只需回退到你的上下文并做这样的事情:

var user = db.Users.Where(m => m.CodeNumber == model.CodeNumber && m.PinCode == model.PinCode);
if (user == null)
{
    ModelState.AddModelError("", "Incorrect code number and/or pin code");
}

然后,如果用户存在,只需手动登录:

await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);