如何使用MVC/ c#创建最终用户SQL Server连接对话框



我是c#和MVC的新手。尝试创建允许用户配置或更改初始SQL Server连接字符串的内部网应用程序。连接需要支持SQL混合模式身份验证。虽然我的后端技能非常出色,但这是我第一次尝试创建基于web的内部网web应用程序。我已经在谷歌搜索了3天,试图找到一个例子,教程或文档,没有运气。我甚至不确定这是否是一种可以接受的做法。我使用VS2015, SQL Server 2012, c#, MVC, ASP。.Net和。Net框架4.61。

可能你不能轻易地在web.config动态地改变默认/初始连接字符串(并且认为在web.config上直接改变它是有害的),但是SqlConnectionStringBuilder可以在运行时通过请求建立你的连接字符串:

// assume these properties are part of DB provider definition
public class DatabaseSettings 
{
    public String ConnectionName { get; set; }
    public String ServerName { get; set; }
    public String DatabaseName { get; set; }
    public String UserId { get; set; }
    public String Password { get; set; }
}
// controller method definition
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = DatabaseSettings.ServerName;
builder.InitialCatalog = DatabaseSettings.DatabaseName;
builder.IntegratedSecurity = true;
builder.UserID = DatabaseSettings.UserId;
builder.Password = DatabaseSettings.Password;
builder.MultipleActiveResultSets = true;
// modify initial connection string in runtime
// note that ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString is readonly by default, 
// thus use reflection to disable private bReadOnly field before adding custom connection string
var connectionString = ConfigurationManager.ConnectionStrings;
var collection = typeof(ConfigurationElementCollection).GetField("bReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
collection.SetValue(connectionString, false);
// This one may work if you tend to change default connection string value
// connectionString[0].ConnectionString = builder.ToString();
// Safer way by adding new name rather than replace default one
connectionString.Add(new ConnectionStringSettings(DatabaseSettings.ConnectionName, builder.ToString()));

你可以为每个用户存储用户定义的连接字符串在XML文件中,并在有人需要时以编程方式加载(参见从外部配置文件读取连接字符串)。

关于混合模式(Windows &内部网和表单认证;internet),将IIS设置为2个入口点(即虚拟目录),其中完整的应用程序应该依赖于表单认证模式。Windows身份验证控制器通过传递用户身份直接重定向到主站点。

在主站点的登录页面上,您可能想要添加"使用Windows/Active Directory帐户登录"按钮(类似于现有社交媒体帐户的登录按钮),点击它将把内网用户重定向到专门用于从Windows身份验证模式接收凭据的控制器。

也许这不是回答你需求的最好方式,但至少可以打开你的思维,学习和思考要做什么。

引用:

1)以编程方式更改连接字符串

http://david.gardiner.net.au/2008/09/programmatically-setting.html

2)双模式认证

https://msdn.microsoft.com/en-us/library/bb669066(v=vs.110).aspx (MS SQL Server认证文章)

http://www.codeguru.com/csharp/.net/net_security/authentication/article.php/c19559/ASPNET-Mixed-Mode-Authentication.htm

http://mvolo.com/iis - 70二级-验证-形式-验证-和- windows - authentication/

最新更新