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; }
我们正在构建一个 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; }