我有一个ASP。具有内部个人用户帐户的。NET web应用程序。我想从外部程序创建这些用户帐户。我有一个引用Microsoft.AspNet.Identity
的程序。其中我创建了users:
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
。(我很确定用户名和密码是正确的;我从数据库复制用户名,并从代码复制密码。)它不应该起作用吗?我错过什么了吗?
事实证明,罪魁祸首是IdentityUser
。我不知道为什么(我猜securitystamp与它有关),但您需要制作ApplicationUser
s。所以我包含了一个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");