MVC 层上的全局变量 API

Global Variable over Layers on MVC API

我们正在构建一个 MVC API + 实体项目,现在我们正在创建我们的日志层,我们想要记录我们添加、更改或删除的每个实体,但是我们需要记录用户 ID也正在执行该操作,id 随 Header [授权].

一起提供

我们的日志是作为数据库操作之前的操作执行的,因此我们需要将用户 ID 添加到所有层上的每个方法签名中,直到 DAL。

在互联网上稍微研究了一下,查看全局变量、HTTPContext 等后,我们没有找到任何没有 "harm" 项目层的解决方案,有什么想法吗?我们应该如何进行?

您可以使用 DI 将当前用户注入任何 DAL 类 需要它的地方。例如,我使用 Ninject 来执行此操作,因此我不需要在每个更新函数中都将用户 ID 作为参数:

kernel.Bind<IPrincipal>().ToMethod(c => HttpContext.Current.User);

然后在应用程序中 类 需要的地方:

[Inject]
public IPrincipal CurrentUser { get; set; }