在代码中将凭证(用户名/密码)分配给 EF

问题描述 投票:0回答:3

我已经设置了实体模型和连接,并且您可能知道,当您设置要存储在配置文件中的连接时,它建议您不要将“敏感”数据(即用户名和密码)存储在配置文件,我想做的是允许用户自己输入该信息。

如何将其分配给代码中的连接?

我是否必须拉出字符串,修改它(通过添加用户/密码),然后重新分配连接字符串?

c# entity-framework
3个回答
2
投票
public class MyContext : DbContext
{
    // Add a constructor that takes a connection string
    public MyContext(string connString)
        : base(connString)
    {         
    }
}

// Call this method from a page or controller
public void ConnectToTheDatabase(string username, string password)
{
    // create the connection string; I like to user the builder
    System.Data.Common.DbConnectionStringBuilder builder 
        = new System.Data.Common.DbConnectionStringBuilder();

    builder.Add("Server", "tcp:asdfewsdfgwe.database.windows.net,1422");
    builder.Add("Database", "supersonic_db");
    builder.Add("User ID", username);
    builder.Add("Password", password);
    builder.Add("Trusted_Connection", "False");
    builder.Add("Encrypt", "True");
    builder.Add("Connection Timeout", "30");

    var connString = builder.ToString();

    // Set the connection string
    MyContext context = new MyContext(connString);

    // Test with something simple
    context.Database.Connection.Open();
    string version = context.Database.Connection.ServerVersion;
    version = version.ToUpper();
}

1
投票

听起来像桌面(不是网络应用程序),对吗?因为您可能不是在互联网上运行,而是在本地网络中运行,为什么不使用集成(Windows)安全性而不是 sql server 安全性,并且必须存储登录名/密码。


0
投票

@CharlieOliver 因为如果您将敏感数据包含在 App.Config 中,您的数据库可能会被黑客入侵。如果您将这些代码放入源代码中,您的数据库就会受到保护。

© www.soinside.com 2019 - 2024. All rights reserved.