Скрытие поля хэша пароля в EntityFramework - PullRequest
2 голосов
/ 08 июня 2010

Я использую Entity Framework для проекта и хочу, чтобы он вел себя аналогично моему обычному проекту ado.net, где я никогда не получаю хэш пароля из базы данных, чтобы избежать утечек секретной информации.

У меня есть пара идей

  • нужно скрыть поле от частичного класс, но я не знаю, если это возможно.
  • Изменить код Шаблон поколения с уродливым, если пункт для этого особого случая

Ни одно из этих решений не мешает данным покинуть базу данных, я думаю, просто скрывает поля с возвращением String.Empty или чего-то подобного. Есть ли способ вообще не включать это поле, но при этом есть возможность добавлять новых пользователей или изменять хэш в функции забытого пароля.

1 Ответ

2 голосов
/ 08 июня 2010

У вас есть несколько вариантов:

  1. Вы можете удалить свойство Password из вашего концептуального слоя, и EF не выберет его из базы данных. (Просто нажмите «Удалить», когда свойство выбрано в конструкторе.)
  2. Вы можете создать представление в своей БД и опубликовать только хэш пароля (т. Е. Виртуальный столбец). Мой предыдущий вопрос может вам помочь.
  3. Вы можете сделать доступность свойства Password в сгенерированной вами сущности не общедоступной. (Опять же, выберите свойство в конструкторе и проверьте его свойства.) Обратите внимание, конечно, что пароль действительно покидает базу данных с этой опцией.

В первых двух случаях вам потребуется побочный канал для обновления пароля в базе данных - вероятно, хранимая процедура. Третий вариант должен позволять вам обновлять пароль, оставляя его скрытым от обычных пользователей, хотя, конечно, он будет в памяти, так что опытные пользователи могут иметь к нему доступ.

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