我将Visual Studio MVC 5与处理登录等的帐户模板一起使用。 我想以没有密码的用户身份登录。我尝试过:
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
但随后出现“找不到用户ID”的错误。
我以此创建用户:
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await UserManager.CreateAsync(user, Guid.NewGuid().ToString());
if (result.Succeeded)
{
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
}
此后,我登录,然后再次登录,则出现此错误。
编辑。:我知道出了什么问题。
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
还会创建一个新ID。我认为这不是正确的登录方法。.
正常的登录方法是使用SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
,但是我需要输入密码。
我该怎么办?不用密码登录吗?
答案 0 :(得分:2)
您的对象ApplicationUser没有ID,这就是您收到此错误的原因。
尝试一下:
var user = await _userManager.FindByNameAsync(model.Email);
await _signInManager.SignInAsync(user, isPersistent: false);
您也可以使用:
var user = await _userManager.FindByEmailAsync(model.Email);
希望这会有所帮助!
答案 1 :(得分:1)
经过一些尝试和错误。您需要将用户作为ApplicationUser并具有正确的数据,就像保存在数据库中一样。
要获得用户,您需要执行以下操作:
ApplicationUser user = UserManager.FindByEmailAsync(model.Email).Result;
,这需要传递给SignInAsync函数。