我使用Code First RC来构建一个类库,我希望能够加密我正在使用的连接字符串。类库的使用者可以是ASP.NET或Windows Forms应用程序,所以我需要一种适用于这两者的加密方法。如何使用EF 4.1 Code First加密连接字符串?
看来我可以通过名称传递连接字符串到DbContext,但不是通过值,如here所示,所以我不认为我可以在将字符串传递给DbContext之前在程序中手动解密。任何人都可以将我指向正确的方向吗?
我使用Code First RC来构建一个类库,我希望能够加密我正在使用的连接字符串。类库的使用者可以是ASP.NET或Windows Forms应用程序,所以我需要一种适用于这两者的加密方法。如何使用EF 4.1 Code First加密连接字符串?
看来我可以通过名称传递连接字符串到DbContext,但不是通过值,如here所示,所以我不认为我可以在将字符串传递给DbContext之前在程序中手动解密。任何人都可以将我指向正确的方向吗?
您可以轻松加密任何.NET配置部分 - 不仅仅是在ASP.NET尽可能多的开发者似乎认为,但绝对也是其他应用程序。
的话题退房Jon Galloway's blog post - 优秀的读!
通过这种方法,你可以加密<connectionStrings>
部分 - 并使其更容易的是,你可以外部化该段成一个单独的文件,太。
app.config
为您的WinForms应用
所以,你必须:
<connectionStrings configSource="ConnectionStrings.config" />
和相同的将是你的web.config
为Web应用程序,并引用将包含只是<connectionStrings>
的文件,并可能被加密。从您的配置中加载适当的连接字符串,并将其传递到您的DbContext
构造函数中,并且您应该没问题。
您可以通过一个完整的连接字符串到的DbContext:
“其他的DbContext构造选项”:
...
- 您可以通过一个完整的连接字符串到DbContext而不仅仅是 数据库或连接字符串 名称。默认情况下,此连接 字符串与 System.Data.SqlClient提供程序一起使用; 这可以通过设置不同 实施
IConnectionFactory的到
context.Database.DefaultConnectionFactory被改变。- 您可以通过它 传递到的DbContext构造使用现有的DbConnection对象。如果 连接对象是 EntityConnection的一个实例,则在连接中指定的模型 将在数据库/模型优先模式中使用 。 如果对象是 的某个其他类型的实例,例如 SqlConnection,则上下文将 用于代码优先模式。
...
如果这是真的,那么你可以使用AES或其他一些加密的加密字符串。config文件,然后在运行时解密并将其提供给DbContext构造函数。
谢谢 - 效果很好。 – Roger 2011-04-08 20:27:12
如果您正在使用转换,将加密部分工作吗?即。 'Web.Release.config'? – 2012-12-20 20:10:06