2017-04-04 11 views
0

ASP.Net IDに問題があります。ASP.Net ID - パスワードでログインできません

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を実行したときに、私は、行がうまく返され見ることができます。

データベースから返された実際のレコード数が1のときにuserManager.Findが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);