我在 Winforms 应用程序中使用 C#,并且我将 Identity 连接到我可以在数据库中找到用户的位置。我有一个简单的登录表单,但无法正常工作。我可以找到用户,但无法通过密码验证用户。我有一个文本框用户名,一个用于密码,一个按钮和一个用于显示结果的标签。这是我的代码:
private async void LoginButton_ClickAsync(object sender, EventArgs e)
{
if (!String.IsNullOrEmpty(Username.Text) &&
!String.IsNullOrEmpty(Password.Text))
{
var context = new MyDbContext();
var userManager = new UserManager<ApplicationUser>(new
UserStore<ApplicationUser>(context));
//THIS SUCCESSFULLY FINDS THE USER
ApplicationUser user = await userManager.FindByEmailAsync(UxUsername.Text);
if (user == null)
{
ResultLabel.Text = "NOT FOUND";
}
if (userManager.PasswordHasher.VerifyHashedPassword(user.PasswordHash, Password.Text)
!= PasswordVerificationResult.Failed)
{
ResultLabel.Text = "MATCH FOR USER AND PASSWORD!";
}
ResultLabel.Text = "NOT FOUND";
}
}
我也试过这个,但我什至无法让用户回来——它是空的:
ApplicationUser user = await userManager.FindAsync(Username.Text, Password.Text);
我正在为 MVC 应用程序使用同一个数据库,并且我使用完全相同的凭据登录得很好。
谢谢。
最佳答案
使用 SignInManager
类中的 CheckPasswordSignInAsync
来验证您的用户。
ApplicationUser user = await userManager.FindByEmailAsync(UxUsername.Text);
var signInResult = _signInManager.CheckPasswordSignInAsync(user, ,User.Password, false);
要使用 SignInManager
,您应该将其注入(inject)您的表单类。
Note: SignInManager is in
Microsoft.AspNetCore.Identity
关于c# - Winforms 登录中的 ASP .NET Core 身份未进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52895810/