Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Asp内核添加了一种通过身份进行用户注册的新方法_C#_Asp.net Core 1.1_Asp.net Core Identity - Fatal编程技术网

C# Asp内核添加了一种通过身份进行用户注册的新方法

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内核中实现这一点? 提前感谢。简单地说,标识的开箱即用方式是,用户

我有一个问题,我在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);