メンバーシップシステムにASP.NET Identity 2を使用する新しいMVC 5カミソリ、EF 6 Web アプリケーションがあります。Web ページの [登録] リンクを使用して手動でユーザーを作成すると、うまくいきます。ユーザーを作成し、指定されたパスワードでログインしてからログアウトできます。
Identity 2 の移行でデータベース初期化子を使用する方法がわかりません。Identity 1 および他のアルファ版とベータ版には、人々を混乱させるだけの無数の例があります。まだわからないので、一時的な MVC ビューを使用してメンバーシップをインストールします。
ビューが適切に実行されていることがわかります。ユーザーとロール、およびデータベース内のユーザーとロールの関連付けが表示されます。また、ユーザーのレコードにハッシュ化されたパスワードがあることもわかります。
しかし、それを行った後、Create メソッドで使用したプレーン テキストのパスワードを使用して ID システム (ローカル) にログインできません。なぜですか? ところで、try/catch を省略し、ユーザーとロールの作成をチェックしました (エラーなしで実行されます)。
DbContext ctx = ApplicationDbContext.Create();
transaction = ctx.Database.BeginTransaction();
RoleManager<IdentityRole> roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(ctx));
var roleAdmin = roleManager.Create(new IdentityRole("Admin"));
var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(ctx));
ApplicationUser userAdmin = new ApplicationUser { Id = "admin", Email = "me@there.com", UserName = "admin" };
userManager.Create(userAdmin, "Test_2013");
userManager.AddToRole(userAdmin.Id, "Admin");
userManager.Update(userAdmin);
transaction.Commit();
その後、メール アドレスと Test_2013 のパスワードを使用してアカウントにログインしようとすると、ユーザー名/パスワードが正しくないことを示すエラーが表示されます。