Я думаю, что IUserPasswordStore не несет ответственности за хэширование пароля, поэтому вам не нужно помещать туда свой хэш-алгоритм. Ответственность IUserPasswordStore заключается только в том, чтобы установить и получить хешированный пароль от пользователя Identity (MyIdentityUser).
Взгляните на реализацию GetPasswordHashAsync в UserStoreBase, просто верните user.PasswordHash, вот и все.
https://github.com/aspnet/AspNetCore/blob/bfec2c14be1e65f7dd361a43950d4c848ad0cd35/src/Identity/Extensions.Stores/src/UserStoreBase.cs [115] [IserS], если вы внедрили Iser SoS, если вы это используете не означает, что у вас должен быть свой собственный хэш-пароль.
Ответственный за хеширование пароля - IPasswordHasher. Если вы хотите иметь свой собственный хэш-пароль, вы можете реализовать его самостоятельно.
public class MyPasswordHasher : IPasswordHasher
{
public string HashPassword(MyIdentityUser user, string password)
{
...
}
public PasswordVerificationResult VerifyHashedPassword(MyIdentityUser user, string hashedPassword, string providedPassword)
{
...
}
}
Для хэша пароля по умолчанию вы можете найти его здесь,
И зарегистрируйте его для DI в файле startup.cs, чтобы UserManager использовал ваш собственный пользовательский хэш-пароль. Или, другими словами, это добавит ваш хэш-пароль в поток.
services.AddScoped, MyPasswordHasher>();
А также взгляните на класс UserManager, здесь взаимодействуют IUserPasswordStore и IPasswordHasher. Внутри UserManager вы найдете следующий код
passwordStore.SetPasswordHashAsync(user, PasswordHasher.HashPassword(newPassword)).WithCurrentCulture();
Обновление с 2005 до 2008 в порядке, движение назад могло бы потребовать большего количества работы
N.B. У Вас могла бы быть проблема с Вашей базой данных логины (поскольку они не будут существовать в новом ведущем дб сервера), но это - что-то, что произошло бы независимо от серверной версии. Просто воссоздайте их и перепартнера Вашей базы данных.
Да, но удостоверьтесь, что ВСЕМИ Вашими серверами является SQL 2008. Если у Вас будут разработка, тест, QA или серверы аварийного восстановления, то все они должны будут быть 2008, с 2005 серверы не смогут восстановить резервное копирование 2008 года.
Для предотвращения потерянной проблемы с логином что упомянутый Ilya выполните шаги в этой статье базы знаний. SP_Help_Revlogin напишет сценарий Ваших логинов, и можно применить тот сценарий на новый сервер. Престо, все Ваши логины вернулись к тому же SIDs и всему.
http://support.microsoft.com/kb/246133
(И просто для дальнейшего использования, это - то, как мы обновили StackOverflow вчера вечером, heh.)
Можно восстановить резервное копирование 2005 года с 2008 без любых проблем. Совместимость с этой точки зрения хороша.
Назад не возможно только с файлами резервных копий.
В любом случае можно также воссоздать структуру базы данных и использовать SSIS для передачи данных от одного сервера до другого.
Можно также сделать отсоединение/присоединение с файлами базы данных (по крайней мере, Вы могли, идя с 2000 до 2005), но существует больше протестов с этим подходом (требует явный, восстанавливают индексы впоследствии IRRC),