gpt4 book ai didi

asp.net - 如何将 Windows 用户(而不是服务帐户)登录到数据库?

转载 作者:行者123 更新时间:2023-12-02 10:05:27 24 4
gpt4 key购买 nike

我们的 Intranet 上运行着一个 .NET 4 Web 应用程序。当用户启动应用程序时,系统会检查用户的 Windows 凭据,以确保用户是正确的 Active Directory 组的成员。如果一切顺利,用户将被发送到我们的应用程序页面,他们可以开始工作。

Web 应用程序通过通用服务帐户(作为通用用户执行操作的能力有限的帐户)连接到数据库。系统运行良好。用户编辑被记录。

问题是正在记录的用户名。记录的用户名是服务帐户的名称,而不是用户的名称。正如您可以想象的那样,这使得审计变得毫无用处。是的,我们可以知道进行了更改、何时进行了更改,甚至更改了什么,但我们无法知道是谁进行了更改。

一些背景 - 这个项目是几年前开始的,当时是基于 SQL Server 2005 构建的。当时,首席开发人员得出结论,不可能将 Windows 用户名传递到数据库并使其记录到日志中用户名正确。当我们迁移到 SQL Server 2008 时,我们决定“接受它”并重新评估。

所以,我们现在使用的是 SQL Server 2008,我正在重新评估。首席开发人员已不在。

如何继续使用我的服务帐户但记录 Windows 帐户名称?我们不想为每个用户创建 SQL 帐户。

更新 1 - 我遗漏了一个关键细节。我们生成的所有更改日志都是基于触发器的。每当发生更改时,数据库都会通过触发器生成审核记录,而不是通过 Web 应用程序中的 SQL 代码。

最佳答案

您需要通过 Intranet 上的代码来完成此操作。由于 ASP.Net 在其自己的 w3worker 进程上下文中运行,因此它将始终显示为 SQL Server 的该帐户。

使用 Page.User.Identity.Name 或更完整的 System.Web.HttpContext.Current.User.Identity.Name。

Get the username of the user accessing ASP.NET intranet page within local network

关于asp.net - 如何将 Windows 用户(而不是服务帐户)登录到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9082358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com