我有一个问题,我有一个网络应用程序在Asp Net Core 1.1.0上实现了经典身份模型,并使用OpenIddict进行授权。
在使用电子邮件/密码注册用户的经典实现中,我还需要认识到使用CodeNumber ( 15个字符的数字序列长度)作为登录名和PIN码(4个字符的数字组合)作为密码进行注册的可能性。
CodeNumber和PinCode将存储在与用户身份表分开的位置。
以便用户可以使用两种方法登录到系统
请告诉我如何在Asp .Net核心中实现这一点?提前谢谢你。
发布于 2017-08-07 23:55:56
简单地说,身份开箱即用的方式是通过用户名查询用户,然后通过比较密码自动登录。要以不同的方式处理问题,您只需对该过程进行更多的手动控制。而不是使用像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);https://stackoverflow.com/questions/45549320
复制相似问题