ASP .NET Core Identity в Winforms логин не аутентифицируется - PullRequest
0 голосов
/ 19 октября 2018

Я использую C # в приложении Winforms, и у меня есть 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, и я просто вхожу в систему с теми же точными учетными данными.

Спасибо.

1 Ответ

0 голосов
/ 20 октября 2018

используйте CheckPasswordSignInAsync из SignInManager класса для аутентификации вашего пользователя.

ApplicationUser user = await userManager.FindByEmailAsync(UxUsername.Text);
var signInResult = _signInManager.CheckPasswordSignInAsync(user, ,User.Password, false);

Чтобы использовать SignInManager, вы должны внедрить его в свой класс формы.

Примечание: SignInManager находится в Microsoft.AspNetCore.Identity

...