Использование Fluent NHibernate Persistence Tester Tool с объектом, у которого есть зашифрованное поле пароля - PullRequest
1 голос
/ 03 августа 2011

Прежде всего: я совершенно новичок в Fluent и NHibernate.

У меня есть объект User, содержащий поле пароля.При установке этого поля значение шифруется.Сейчас я пытаюсь использовать инструмент проверки постоянства

new PersistenceSpecification<User>(session)
    ...
    .CheckProperty(p => p.Password, "secret")
    ...
    .VerifyTheMappings();

.Проблема, с которой я сталкиваюсь, заключается в обработке поля пароля.Отладчик сказал мне, что инструмент вызывает метод установки поля Password несколько раз.Первый раз с открытым текстом пароль «секрет».В следующий раз, когда зашифрованные версии заканчиваются шифрованием моего пароля несколько раз.

Есть идеи, как справиться с этим?

Ответы [ 2 ]

0 голосов
/ 31 декабря 2011

Чтобы решить эту проблему, используйте метод установки для установки пароля, например,

public virtual void UpdatePassword(string newPassword)
{
    string hashedPassword = HashPassword(newPassword);
    _password = hashedPassword;
}

Таким образом, ваша логика хеширования / шифрования отделена от вашего установщика свойств.В тесте PersistenceSpecification вы затем будете тестировать сохранение / получение зашифрованного текста.

Если вам необходимо расшифровать пароль, используйте метод getter для получения расшифрованного пароля (свойство Password будет содержать зашифрованныйтекст).

public virtual string GetPasswordDecrypted()
{
    ...
}

Примечание: если у вас нет веских причин, лучше будет хешировать пароль, чем шифровать его.

0 голосов
/ 03 августа 2011

EDIT: NHibernate должен установить пароль на пользователя после того, как он загрузил его из БД и когда вы используете стандарт

Map(user => user.Password);

будет использовать свойство для установки значения db

Map(user => user.Password).Access.CamelCaseField(Prefix.Underscore);

предотвращает это, тогда

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...