SQL MS 2005 может скопировать быть восстановленным на экземпляр SQL MS 2008?

Я думаю, что 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)
        {
            ...
        }
    }

Для хэша пароля по умолчанию вы можете найти его здесь,

https://github.com/aspnet/AspNetCore/blob/bfec2c14be1e65f7dd361a43950d4c848ad0cd35/src/Identity/Extensions .Core / src / PasswordHasher.cs

И зарегистрируйте его для DI в файле startup.cs, чтобы UserManager использовал ваш собственный пользовательский хэш-пароль. Или, другими словами, это добавит ваш хэш-пароль в поток.

services.AddScoped, MyPasswordHasher>();

А также взгляните на класс UserManager, здесь взаимодействуют IUserPasswordStore и IPasswordHasher. Внутри UserManager вы найдете следующий код

passwordStore.SetPasswordHashAsync(user, PasswordHasher.HashPassword(newPassword)).WithCurrentCulture();

12
задан Kevin Fairchild 17 November 2008 в 13:54
поделиться

4 ответа

Обновление с 2005 до 2008 в порядке, движение назад могло бы потребовать большего количества работы

N.B. У Вас могла бы быть проблема с Вашей базой данных логины (поскольку они не будут существовать в новом ведущем дб сервера), но это - что-то, что произошло бы независимо от серверной версии. Просто воссоздайте их и перепартнера Вашей базы данных.

8
ответ дан 2 December 2019 в 21:04
поделиться

Да, но удостоверьтесь, что ВСЕМИ Вашими серверами является SQL 2008. Если у Вас будут разработка, тест, QA или серверы аварийного восстановления, то все они должны будут быть 2008, с 2005 серверы не смогут восстановить резервное копирование 2008 года.

Для предотвращения потерянной проблемы с логином что упомянутый Ilya выполните шаги в этой статье базы знаний. SP_Help_Revlogin напишет сценарий Ваших логинов, и можно применить тот сценарий на новый сервер. Престо, все Ваши логины вернулись к тому же SIDs и всему.

http://support.microsoft.com/kb/246133

(И просто для дальнейшего использования, это - то, как мы обновили StackOverflow вчера вечером, heh.)

http://twitter.com/SuperDalgas/status/976719756

4
ответ дан 2 December 2019 в 21:04
поделиться

Можно восстановить резервное копирование 2005 года с 2008 без любых проблем. Совместимость с этой точки зрения хороша.

Назад не возможно только с файлами резервных копий.

В любом случае можно также воссоздать структуру базы данных и использовать SSIS для передачи данных от одного сервера до другого.

2
ответ дан 2 December 2019 в 21:04
поделиться

Можно также сделать отсоединение/присоединение с файлами базы данных (по крайней мере, Вы могли, идя с 2000 до 2005), но существует больше протестов с этим подходом (требует явный, восстанавливают индексы впоследствии IRRC),

0
ответ дан 2 December 2019 в 21:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: