Как зашифровать строку подключения с помощью EF 4.1 Code First? - PullRequest
4 голосов
/ 28 марта 2011

Я использую Code First RC для создания библиотеки классов, и я хотел бы иметь возможность шифровать строку подключения, которую я использую. Потребителями библиотеки классов могут быть приложения ASP.NET или Windows Forms, поэтому мне нужен метод шифрования, который работает с обоими.

Похоже, что я могу передать строку подключения в DbContext по имени, но не по значению, как показано здесь , поэтому я не думаю, что могу вручную расшифровать в своей программе перед передачей строки в DbContext. Кто-нибудь может указать мне правильное направление?

Ответы [ 2 ]

3 голосов
/ 28 марта 2011

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

Ознакомьтесь с Блог Джона Гэллоуэя по теме - отлично читаю!

При таком подходе вы можете зашифровать раздел <connectionStrings> - и, чтобы еще проще, вы также можете вынести этот раздел в отдельный файл.

Таким образом, в вашем app.config для вашего приложения Winforms у вас будет:

<connectionStrings configSource="ConnectionStrings.config" />

, и то же самое будет в вашем web.config для вашего веб-приложения, а указанный файл будет содержать только<connectionStrings> и это может быть зашифровано.Загрузите соответствующую строку подключения из вашей конфигурации и передайте ее в ваш DbContext конструктор, и все будет в порядке.

1 голос
/ 28 марта 2011

Вы можете передать полную строку подключения в DbContext:

http://blogs.msdn.com/b/adonet/archive/2011/01/27/using-dbcontext-in-ef-feature-ctp5-part-2-connections-and-models.aspx

В разделе «Другие параметры конструктора DbContext»:

...

  • Вы можете передать полную строку подключения в DbContext вместо просто имени базы данных или строки подключения.По умолчанию эта строка подключения используется с поставщиком System.Data.SqlClient;это можно изменить, установив другую реализацию
    IConnectionFactory на
    context.Database.DefaultConnectionFactory.
  • Вы можете использовать существующий объект DbConnection, передав его конструктору DbContext.Если объект соединения является экземпляром EntityConnection, то модель, указанная в соединении, будет использоваться в режиме «База данных / Модель сначала».Если объект является экземпляром какого-либо другого типа, например SqlConnection, тогда контекст будет использовать его для режима Code First.

...

Если этоЗначение true, тогда вы можете использовать AES или другое шифрование для шифрования строки в файле .config, затем расшифровать во время выполнения и передать ее в конструктор DbContext.

...