Я пытаюсь использовать SecurEntity для реализации шифрования столбца для некоторых таблиц в моем приложении.Проблема шифрования столбца Entity Framework
Я использую Injection Dependency для инъекции одного экземпляра DbContext в мои все мои репозитории.
Класс DbContext имеет событие, связанное с обработчиком события SaveChanges, которое вызывает метод SecurEntity Encrpyt, если сохраненные изменения сохраняются на объекте, который должен быть включен.
Также есть событие, связанное с обработчиком событий ObjectMaterialized, который расшифровывает зашифрованные объекты, когда они изначально извлекаются из базы данных.
Когда я отлаживаю приложение во время входа в систему, объект User (который является одной из таблиц, которые следует зашифровать), объект User извлекается из базы данных и успешно дешифруется. Затем он имеет несколько свойств, таких как дата последнего входа, и эти изменения сохраняются и затем зашифровываются успешно.
Моя проблема заключается в том, что позже в процессе входа пользовательский объект снова извлекается, но он не запускает событие ObjectMaterialized, поэтому оно не дешифруется.
Я предполагаю, что это связано с тем, что один из DbContext используется из-за впрыска зависимостей, а Entity Framework уже имеет экземпляр его, который отслеживается.
Есть ли у кого-нибудь идеи, как я могу обойти это? Я разрабатываю приложение, которое будет размещено на Azure, поэтому прозрачное шифрование данных не является для меня вариантом, и мне нужно реализовать некоторую форму шифрования.
Помните, что текущая реализация SecurEntity имеет фатальный недостаток безопасности, что означает, что ключ, сгенерированный из сертификата, на самом деле никогда не используется. Для быстрого и грязного исправления см. Https://securentity.codeplex.com/workitem/7376 –