2017-04-04 58 views
0

ASP.Net身份有問題。我通過以下方式創建用戶:ASP.Net身份 - 無法使用密碼登錄

var manager = new UserManager<IdentityUser>(userStore); 

       manager.UserValidator = new UserValidator<IdentityUser>(manager) 
       { 
        AllowOnlyAlphanumericUserNames = false 
       }; 

       manager.PasswordValidator = new PasswordValidator 
       { 
        RequiredLength = 6, 
        RequireDigit = true, 
        RequireLowercase = true, 
        RequireUppercase = true, 
       }; 

       var user = new IdentityUser() { UserName = email.Text, Email = email.Text };      
       IdentityResult result = manager.Create(user, Password1.Text); 

然後這會將用戶添加到數據庫中。然後,當我嘗試使用此用戶登錄時,即使密碼與用於創建帳戶的密碼相同,它也會始終返回「密碼不正確」。

我登錄使用:

var userStore = new UserStore<IdentityUser>(); 
var userManager = new UserManager<IdentityUser>(userStore); 


     userManager.UserValidator = new UserValidator<IdentityUser>(userManager) 
     { 
      AllowOnlyAlphanumericUserNames = false 
     }; 

     var user = userManager.Find(email.Text, Password.Text); 

     if (user != null) 

使用SQL事件探查器,我可以看到它正確地查找用戶,當我在SSMS運行SQL我可以看到該行返回的罰款。

我不確定爲什麼userManager.Find在從數據庫返回的實際記錄數爲1時返回null?

+0

這是一個MVC應用程序?我相信你應該使用SignInManager類。 – JuanR

+0

如果分析器顯示返回數據的查詢,則散列算法不成問題。添加你的經理'Create'和'Find'方法,以便它可以複製 – bradbury9

+0

@Juan它的一個ASP.Net Web窗體項目。 – Dean

回答

1

使用SignInManager

SignInManager<IdentityUser> _signInManager; // Inject 

var result = await _signInManager.PasswordSignInAsync(email.Text, Password.Text, true, lockoutOnFailure: true);