c# - Winforms 登录中的 ASP .NET Core 身份未进行身份验证

标签 c# asp.net winforms authentication asp.net-identity

我在 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/

相关文章:

c# - 如何使用 BindingSource 在 DataGridView 的单列中绑定(bind)导航属性(二级模型的两个属性)?

c# - 将 C++ 数组返回到 C#

c# - ASP.NET 样板文件 : How do I inject object of DbContext in application service?

c# - FileUpload 上传代码隐藏。

c# - 串行端口事件的可视化工具(用于发送和接收的数据)

c# - 获取 CheckBoxList 项目值

c# - 与 asp.net MVC 中的 Controller 名称不同的 url

c# - SQL Server - 我想根据使用的标识符选择数据库

c# - 需要固定相邻的固定大小的缓冲区吗?

asp.net - 在 ASP.NET Core Identity(独立)中,如何实现 2FA?