C# Asp内核添加了一种通过身份进行用户注册的新方法
我有一个问题,我在Asp Net Core 1.1.0上有一个Web应用程序,实现了经典身份模型,并使用OpenIddict进行授权 在使用电子邮件/密码注册用户的经典实现中,我需要实现也可以使用CodeNumber(15个字符的数字序列长度)作为登录名,pin码(4个字符的数字组合)作为密码进行注册 CodeNumber和PinCode将存储在单独的用户标识表中 因此,用户可以使用两种方法登录到系统 请告诉我如何在Asp.Net内核中实现这一点?C# Asp内核添加了一种通过身份进行用户注册的新方法,c#,asp.net-core-1.1,asp.net-core-identity,C#,Asp.net Core 1.1,Asp.net Core Identity,我有一个问题,我在Asp Net Core 1.1.0上有一个Web应用程序,实现了经典身份模型,并使用OpenIddict进行授权 在使用电子邮件/密码注册用户的经典实现中,我需要实现也可以使用CodeNumber(15个字符的数字序列长度)作为登录名,pin码(4个字符的数字组合)作为密码进行注册 CodeNumber和PinCode将存储在单独的用户标识表中 因此,用户可以使用两种方法登录到系统 请告诉我如何在Asp.Net内核中实现这一点? 提前感谢。简单地说,标识的开箱即用方式是,用户
提前感谢。简单地说,标识的开箱即用方式是,用户通过用户名查询,然后通过比较密码自动登录。要以不同的方式处理问题,您只需要对该过程进行更多的手动控制。与使用类似于
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);