我有一个ASP.NET Web应用程序,它有内部个人用户帐户。我想从外部程序创建这些用户帐户。所以我有一个引用Microsoft.AspNet.Identity
的程序。在其中我创建了用户:
var userStore = new UserStore<IdentityUser>();
var um = new UserManager<IdentityUser>(userStore);
//...
var newUser = new IdentityUser(userName);
newUser.Email = userName;
var result = um.Create(newUser, "P@ssword1");
但是,当我运行第一个应用程序并尝试登录时,SignInManager.PasswordSignInAsync
始终返回SignInStatus.Failure
。 (我很确定用户名和密码是正确的;我正在从数据库中复制用户名并从代码中复制密码。)不应该有用吗?我错过了什么吗?
答案 0 :(得分:0)
事实证明,罪魁祸首是IdentityUser
。我不知道为什么(我猜测安全标记与它有关),但你需要制作ApplicationUser
。所以我添加了对Web应用程序的引用,因此我可以创建ApplicationUser
而不是IdentityUser
:
var userStore = new UserStore<ApplicationUser>(new ApplicationDbContext());
var um = new UserManager<ApplicationUser>(userStore);
//...
var newUser = new ApplicationUser();
newUser.Email = user.UserName;
newUser.UserName = user.UserName;
var result = um.Create(newUser, "P@ssword1");