c# - Visual Studio MVC 5 无需密码登录

标签 c# asp.net-mvc asp.net-mvc-5

我使用 Visual Studio MVC 5 和处理登录等的帐户模板。 我想以没有密码的用户身份登录。我试过这个:

var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);

但随后我收到“UserId not found.”错误。

我用这个创建了用户:

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) ;
但是我需要密码。
没有密码如何登​​录?

最佳答案

您的对象 ApplicationUser 没有 id,这就是您收到此错误的原因。

试试这个:

var user = await _userManager.FindByNameAsync(model.Email);
await _signInManager.SignInAsync(user, isPersistent: false);

你也可以使用:

var user = await _userManager.FindByEmailAsync(model.Email);

希望这有帮助!

关于c# - Visual Studio MVC 5 无需密码登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52444562/

相关文章:

angularjs - ASP.NET MVC Razor View 与 AngularJS

c# - MVC 5 一对多虚拟 ICollection 返回空值?

c# - 表单上所有控件的一个事件处理程序

c# - 如何隐藏和取消隐藏 XtraTabControl 的页面?

c# - EF6 和分层架构

asp.net-mvc - ASP.NET 标识 : Prevent the user to Sign In without email confirmation

asp.net - 在编辑 View 中保留实体 key 的更安全方法?

asp.net - 将 MVC 5 降级到 mvc 4

c# - SetBounds 和 SetBoundsCore 有什么区别

c# - Windows Azure - 无法创建角色入口点