gpt4 book ai didi

c# - Entity Framework 列加密问题

转载 作者:行者123 更新时间:2023-12-03 04:37:20 27 4
gpt4 key购买 nike

我正在尝试使用SecurEntity为我的应用程序中的某些表实现列加密。

我正在使用依赖注入(inject)将 DbContext 的单个实例注入(inject)到我的所有存储库中。

DbContext 类有一个附加到 SaveChanges 事件处理程序的事件,如果要保存的更改位于应加密的对象上,该事件将调用 SecurEntity Encrpyt 方法。

还有一个附加到 ObjectMaterialized 事件处理程序的事件,该事件在最初从数据库检索加密对象时对其进行解密。

当我在登录期间调试应用程序时,用户对象(这是应该加密的表之一),从数据库中检索用户对象并成功解密。然后它具有一些属性,例如更新的上次登录日期,并保存这些更改,然后成功加密。

我的问题是,稍后在登录过程中,再次检索 User 对象,但它不会触发 ObjectMaterialized 事件,因此不会解密。

我认为这是因为由于依赖注入(inject)而使用了单个 DbContext,并且 Entity Framework 已经有一个正在跟踪的实例。

有人知道如何解决这个问题吗?我正在开发一个将托管在 Azure 上的应用程序,因此透明数据加密不适合我,我需要实现某种形式的加密。

最佳答案

Web 应用程序不应保留 DbContext 实例。 DbContext 应该在请求期间生存和消亡(也称为请求完成后立即处理)。检查您的依赖注入(inject)是如何配置的,在任何情况下都不应该将其配置为使用 DbContext 作为单例(整个应用程序的单个实例)。

关于c# - Entity Framework 列加密问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18896498/

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