2017-05-03 4 views
0

初期データを使用してDBにシードしようとしていますが、次のコードを使用してユーザーを作成しています。ユーザーは作成されパスワードはハッシュされますが、パスワードでログインしようとすると、エラーメッセージ「Invalid login attempt」でログインできなくなります。私は間違って何をしていますか?私は、カスタムログインではなく、アイデンティティテンプレートでasp.netコアmvc​​アプリケーションを使用しています。asp.net core mvcのdbContextを使用して作成したユーザーでログインできません

デシベルで NormalizedUserNameフィールドがnullで、ログイン時に、次のクエリは、(失敗した)が発行されているため、ログインに失敗した
 var mymail = "[email protected]"; 
     var mypw = "Test1."; 
     var applicationUsers = new ApplicationUser[] 
     { 
      new ApplicationUser { 
       UserName = Constants.AnonUserName, 
       Email = "[email protected]" 
      }, 
      new ApplicationUser { 
       UserName = mymail, 
       Email = mymail 
      } 
     }; 
     var pwHasher = new PasswordHasher<ApplicationUser>(); 
     applicationUsers.ToList().ForEach(u => 
     { 
      u.PasswordHash = pwHasher.HashPassword(u, mypw); 
      context.ApplicationUsers.Add(u); 
     }); 
     context.SaveChanges(); 
+0

「nihatpw」とは何ですか?また、「私のログインができない」という意味は何ですか?デバッグ中に何を観察しましたか?例外?パスワード?何か? – Igor

+0

私はその値を追加しました。無効なログイン試行があります。私は、asp.netのアイデンティティが私のものとは異なる種類のハッシュを使用すると仮定しました(Microsoft.AspNetCore.Identity UserManagerのソースコードをチェックして同じです) – Nihat

+0

ブレークポイントでデバッグして、ハッシュされたパスワードの値を見てみましたか彼らは同じですか? – Rafalon

答えて

0

SELECT "u"."Id", "u"."AccessFailedCount", "u"."ConcurrencyStamp", "u"."Email", "u"."EmailConfirmed", "u"."LockoutEnabled", "u"."LockoutEnd", "u"."NormalizedEmail", "u"."NormalizedUserName", "u"."PasswordHash", "u"."PhoneNumber", "u"."PhoneNumberConfirmed", "u"."SecurityStamp", "u"."TwoFactorEnabled", "u"."UserName" 
    FROM "AspNetUsers" AS "u" 
    WHERE "u"."NormalizedUserName" = $1 
    LIMIT 1 
DETAIL: parameters: $1 = '[email protected]' 

私は解決策がILookupNormalizerサービスを注入し、そのNormalizeで正規化することであると思いますメソッドが既にあまりにも多くの作業です。私は、UserManagerサービスを注入し、そのCreateAsyncメソッドを使用して、上記の@Tsengによってアドバイスされたパスワードを持つユーザーをコメントに作成します。

関連する問題