我正在使用 Entity Framework 5。我们使用 Microsoft Active Directory 进行用户身份验证。我们正在使用适当的 n 层架构,因此在大多数情况下,业务层完全不知道 UI。
现在我们需要保留完整的审计跟踪:每次数据库上发生任何写操作时,我们都必须将其保存到审计日志中,以及进行更改的人。
抓写应该比较简单;我将SaveChanges()
在我的数据上下文中覆盖并使用ObjectStateManager
查找所有插入、更新和删除。真正的问题将是检测当前用户是谁,因为身份验证是在表示层上完成的,而业务层 DLL 将托管在 IIS 上,为任意数量的客户端进程提供服务。
是否有某种方法可以在业务层内部检测客户端使用的身份验证凭据?我绝对不想将用户 ID 传递给 API 中的每个接口!
(FWIW,我也在使用 EntityFramework.Extended,据说它具有一些本机 AuditLog 功能,但文档严重不足。任何有任何成功使用此经验的人都可以帮助吗?)