- 应用程序使用表单身份验证,而不是Windows身份验证。 - 将有一个登录页面,用户在该页面上提供其SQL Server登录ID和密码。 - 为了简化操作,我希望所有SQLDataSource控件都指向web.config连接字符串。这将在设计时完成,而不是通过编程设置。因此,它们将具有以下属性:ConnectionString="<%$ ConnectionStrings:MyDB %>"。 - 我想找到一种方法,在运行时更改"MyDB"连接字符串,使其使用用户提供的登录ID和密码。但是我不希望将其保存到web.config中。它应仅在该用户的会话期间有效。
人们通常如何处理这种情况?我认为一种方法是创建一个Session变量来存储连接字符串,然后在页面加载期间编程更改每个SQLDataSource控件的ConnectionString属性。但是如果可能的话,我希望避免这种方法。
由于许多人询问为什么我希望为每个用户使用唯一的连接,并担心缺乏池化,所以我认为我应该在这里发表评论,而不是在每个单独的响应中发表评论。
这个应用程序的性质要求每个用户都使用自己的帐户连接到数据库。后端安全性与他们的用户帐户相关,因此我们不能使用通用帐户,如"user"和"administrator"。我们还需要知道每个用户的具体身份以进行审计控制。该应用程序通常只有10至20个用户,因此缺乏池化并不是一个问题。我们可以另外讨论这种方法的优点,但不幸的是,我在这里没有选择 - 该项目要求每个用户都使用自己的帐户连接到数据库。
我很想要求Windows身份验证,但不幸的是,该应用程序的某些实现将需要SQL身份验证。
如果我只能像这样声明SQLDataSource控件时设置连接字符串,那就太棒了:
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString = "<%= Session("MyConnectionString") %>"
SelectCommand="SELECT * FROM [Customers]">
</asp:SqlDataSource>
但是我遇到了一个错误,因为它不喜欢在那里使用<% %>标记。如果我不能在声明控件时这样做,那么以编程方式为应用程序中的每个SQLDataSource控件执行此操作的最简单方法是什么?
非常感谢大家的帮助!