我们正在构建一个MVC API + Entity项目,现在我们正在创建我们的日志层,我们想记录我们添加,更改或删除的每个实体,但是我们需要记录执行该操作的用户ID好吧,id带有Header [Authorization]。
我们的日志是作为数据库操作之前的操作执行的,因此我们需要将用户ID添加到所有层上的每个方法签名,直到DAL。
在互联网上研究了一下,查看全局变量,HTTPContext等后,我们没有发现任何没有“伤害”的解决方案。项目层,任何想法?我们该怎么办?
答案 0 :(得分:0)
您可以使用DI将当前用户注入任何需要它的DAL类。例如,我使用Ninject来执行此操作,因此我不需要将用户ID作为每个更新函数的参数:
kernel.Bind<IPrincipal>().ToMethod(c => HttpContext.Current.User);
然后在应用程序的任何类中都需要它:
[Inject]
public IPrincipal CurrentUser { get; set; }