在我之前的问题中,我问的是如何在我的应用程序中使用 Windows 身份验证。现在可以使用了,用户可以使用那里的帐户登录,但我有一个数据库访问方案,但我找不到任何内容。
基本上我会有几台服务器,这就是问题所在。
在某些服务器上,他们将拥有 SQL Server 数据库服务器的 Windows 身份验证帐户,因此应使用模拟他们的凭据。但我注意到它是 web.config 中的一个全局设置(不是每个连接),在一种情况下我想使用应用程序(IIS 或 ASP)Windows 身份验证帐户而不是用户。 (访问我的配置数据库)
我怎样才能做到这一点?
Web 应用程序是托管在 Server 2003/2008 IIS 6/7/7.5 上的 ASP.NET MVC,客户端为 Windows XP 及更高版本。混合使用 SQL Server Express/Standard 2005/2008。
最佳答案
模拟是在站点范围内进行的,您也可以手动将其打开。恐怕您不能手动将其关闭,也不能通过连接字符串完成。
所以基本上关闭模拟,然后在需要模拟时包装数据库调用,如下所示:
using System.Security.Principal;
WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity;
WindowsImpersonationContext ctx = null;
try
{
ctx = winId.Impersonate();
// Do your thing
}
catch
{
}
finally
{
if (ctx != null)
ctx.Undo();
}
关于ASP.NET Windows 身份验证模拟问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1411013/