我使用5与处理登录等的帐户模板。我想作为一个没有密码的用户登录。我试过这个:
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);但是,我得到了"UserId未找到“的错误。
我用以下内容创建了用户:
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);。
但我需要一个密码。
在没有密码的情况下,我怎么能被登录呢?
发布于 2018-09-21 14:27:16
您的对象ApplicationUser没有id,这就是您要获得此错误的原因。
试试这个:
var user = await _userManager.FindByNameAsync(model.Email);
await _signInManager.SignInAsync(user, isPersistent: false);你也可以:
var user = await _userManager.FindByEmailAsync(model.Email);希望这能有所帮助!
发布于 2018-09-21 14:26:40
经过一些尝试和错误。您需要让用户作为ApplicationUser拥有正确的数据,就像将其保存在数据库中一样。
要获得用户,您需要这样做:
ApplicationUser user = UserManager.FindByEmailAsync(model.Email).Result;这需要传递给SignInAsync函数。
https://stackoverflow.com/questions/52444562
复制相似问题