等待SignInManager.PasswordSignInAsync()总是导致我的ASP.NET MVC项目失败

fuz*_*zzi 4 c# asp.net asp.net-mvc asp.net-mvc-4

我目前正在实现登录我的ASP.NET MVC项目的能力.我尽可能多地使用提供的方法.

目前,我在我的数据库中设置了一个名为User的表,它存储了有关用户的所有用户名,密码和其他详细信息.

我的LoginViewModel:

public class LoginViewModel
{
    public User User { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

AccountController(主要是默认的,我只更改了PasswordSignInAsync方法的变量)

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        return View(model);
    }
    // To enable password failures to trigger account lockout, change to shouldLockout: true
    var result = await SignInManager.PasswordSignInAsync(model.User.Username, model.User.Password, false , shouldLockout: false);
Run Code Online (Sandbox Code Playgroud)

为什么这一行总是返回失败?

这是我第一次尝试添加登录功能,所以任何帮助都将非常感激.:)

Z.W*_*ang 20

如果用户名!=电子邮件:

这对我有用

标记

//var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
Run Code Online (Sandbox Code Playgroud)

并添加

ApplicationUser signedUser = UserManager.FindByEmail(model.Email);
var result = await SignInManager.PasswordSignInAsync(signedUser.UserName, model.Password, model.RememberMe, shouldLockout: false);
Run Code Online (Sandbox Code Playgroud)


Jos*_*nez 1

添加

app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);
Run Code Online (Sandbox Code Playgroud)

到方法public void ConfigureAuth(IAppBuilder app)App_Start\Startup.Auth.cs