В моем проекте ASP.NET Core я использую UserManager
, который очень хорошо справляется с проверкой пароля
bool correctPassword = await _userManager.CheckPasswordAsync(user, password);
UserManager
также обрабатывает создание пользователя без необходимости иметь дело с хэшем пароля.
Одна из перегрузок:
public virtual Task<IdentityResult> CreateAsync(TUser user, string password);
Обновление 1:
на основе предоставленного вами кода вы назначаете хэш пароля для Password
членаUser
class
Вместо этого вы должны использовать свойство PasswordHash
, например,
hostAdminUser = new ApplicationUser()
{
UserName = SetupConsts.Users.Host.UserName,
Email = SetupConsts.Users.Host.Email,
EmailConfirmed = true,
PasswordHash = new PasswordHasher<ApplicationUser>().HashPassword(hostAdminUser, SetupConsts.Users.Passwords.Default)
};
await _userManager.CreateAsync(hostAdminUser);
, вот соответствующий бит: PasswordHash = new PasswordHasher<ApplicationUser>
Обновление 2:
Чтобы использовать UserManager
в ASP.NET Core, вам необходимо вставить его в контроллер
public class AuthController : Controller
{
private UserManager<ApplicationUser> _userManager;
public AuthController(
UserManager<ApplicationUser> userManager
)
{
_userManager = userManager;
}
вызатем предполагается использовать _userManager
экземпляр.
В файле Startup.cs найдите метод с именем ConfigureServices
и поместите следующую строку, необходимую для внедрения зависимостей
services.AddTransient<UserManager<ApplicationUser>>();