2017-08-07 106 views
1

我有一個問題,我在Asp Net Core 1.1.0上使用經典的Identity模型和OpenIddict進行授權。Asp Core通過標識添加用戶註冊的新方法

在使用電子郵件/密碼註冊用戶的經典實現中,我需要實現註冊CodeNumber(數字序列長度爲15個字符)作爲登錄名和PIN碼(4個字符的數字組合)的可能性。作爲密碼。

CodeNumber和PinCode將與User Indentity表分開存儲。

,以便用戶可以使用兩種方法來登錄到系統

請告訴我這怎麼能在ASP.NET的核心可以實現嗎? 預先感謝您。

回答

1

簡單地說,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); 
相關問題