gpt4 book ai didi

sql-server - 在中间层使用 Entity Framework 时,我们应该如何捕获数据库用户?

转载 作者:搜寻专家 更新时间:2023-10-30 19:54:06 25 4
gpt4 key购买 nike

我们正在为一个新系统开发一个服务层,该系统将处理与 MSSQL (2005) 数据库的所有交互。对于如何在我们的一些遗留审计表中捕获我们的用户所需的所有“谁做的”信息,我们感到有些困惑。虽然我们可以传入修改数据的用户名并记录调用,但我们将使用一些遗留表,这些表具有触发器来捕获记录插入、更新和删除时的 system_user。我们还在某些地方加入了一些行级安全性,如果可能的话,我们也希望在不更改代码的情况下利用这些安全性。我读到有些人正在使用 contextinfo 来存储用户,但在这种情况下这似乎不太安全。

我最喜欢的选项是在每个存储过程调用的基础上以用户身份执行

execute sp_myproc @foo as user = 'username'

我们遇到的问题是,在 Entity Framework 内,似乎无法将执行命令添加到存储过程调用中。

感谢任何输入。

最佳答案

“EXECUTE AS”不支持过程调用(它会在实际的过程定义中)。 Only remote or dynamic SQL.

选项:

  • 任何中间层都必须将最终用户作为参数传递。我们为没有直接连接到数据库的 Web 服务和 GUI 执行此操作

  • 启用服务器委派,以便每台服务器都可以传递最终用户凭据。基本上是asp.net中的“模拟”。

  • Issue a separate command first

关于sql-server - 在中间层使用 Entity Framework 时,我们应该如何捕获数据库用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3354876/

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