gpt4 book ai didi

asp.net-mvc-5 - ASP.NET MVC 5 Identity 2 PasswordSignInAsync 方法总是返回 false

转载 作者:行者123 更新时间:2023-12-03 20:50:11 26 4
gpt4 key购买 nike

我正在编写用于外部应用程序的代码。我正在尝试使用 Microsoft Identity 2.0 和 ASP.NET MVC 5。我已经自定义了 UserViewModel 以保存 FirstName 和 LastName 以及一些其他参数。每当我注册用户时,它都会成功登录,但是当我尝试使用电子邮件/密码进行正常登录时。 SignInManager.PasswordSignAsync 总是返回假。由于所有检查框架内部的代码,我正试图弄清楚如何调试这种情况。我将在这里提供一些代码来帮助任何愿意查看它的人。提前致谢!

这是微软在他们的示例中提供的通用登录功能。我没有改变那里的任何东西。但这是具有错误消息的函数。

public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}

// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}

这是登录功能
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}

// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}

这是定制的身份模型
    public class ApplicationUser : IdentityUser
{
[DisplayName("Prefix")]
public string Prefix { get; set; }

[DisplayName("First Name")]
public string FirstName { get; set; }

[DisplayName("Last Name")]
public string LastName { get; set; }

[DisplayName("Suffix")]
public string Suffix { get; set; }

public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}

public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}

public System.Data.Entity.DbSet<JBIPlacementTracking.Models.PlacementViewModel> PlacementViewModels { get; set; }

public System.Data.Entity.DbSet<JBIPlacementTracking.Models.Placement> Placements { get; set; }

public System.Data.Entity.DbSet<JBIPlacementTracking.Models.PacketStatus> PacketStatus { get; set; }
}

我想知道问题是否可能是我没有自定义 LoginViewModel。

我现在肯定在我的头上,如果有人有一些好的资源,我真的很感激它的链接。

再次感谢!

最佳答案

您正在使用 EmailUserName在登录功能。确保在注册时,电子邮件被插入到 UserNameEmail领域。我也喜欢用Trim()ToLower()在插入之前和阅读之后,但这只是让我对存储在我的数据库中的内容放心,可能没有必要。祝你好运。

关于asp.net-mvc-5 - ASP.NET MVC 5 Identity 2 PasswordSignInAsync 方法总是返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35166346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com