覆盖 getter 和 setter 的替代方法
Alternative to override getters and setters
我有一些敏感数据,我想在数据库中加密并在代码中即时解密。由于它是一个现有的应用程序,我希望 encryption/decryption 进程在管道中的 运行 尽可能低,这样我就不必修改我的服务级别。我的第一个解决方案是通过我的加密助手将选定属性的 getter 和 setter 修改为 运行。然后我认为将它包装在一个属性中会很好。发现 Post 可以做到这一点的 Sharp 扩展,但对于这种情况似乎有点矫枉过正。是否有任何其他替代方案可以实现我想要做的事情?
根据您使用 EF 的方式,您可以在 EF DbContext 之上构建一个包装器,这是一个通用存储库,您可以在其中注入一些挂钩(拦截器)。
其中一个拦截器类似于 ICryptographyInterceptor,它将根据实体类型处理加密(插入时)或解密(检索时)的逻辑,它不会污染您的业务逻辑或模型,因为这些拦截器将处理此任务。
可以找到现有的实现 here。
如果项目对于此类更改来说过于复杂,也许用于转换实体的 ICryptographyService 是更好的解决方案。
我有一些敏感数据,我想在数据库中加密并在代码中即时解密。由于它是一个现有的应用程序,我希望 encryption/decryption 进程在管道中的 运行 尽可能低,这样我就不必修改我的服务级别。我的第一个解决方案是通过我的加密助手将选定属性的 getter 和 setter 修改为 运行。然后我认为将它包装在一个属性中会很好。发现 Post 可以做到这一点的 Sharp 扩展,但对于这种情况似乎有点矫枉过正。是否有任何其他替代方案可以实现我想要做的事情?
根据您使用 EF 的方式,您可以在 EF DbContext 之上构建一个包装器,这是一个通用存储库,您可以在其中注入一些挂钩(拦截器)。
其中一个拦截器类似于 ICryptographyInterceptor,它将根据实体类型处理加密(插入时)或解密(检索时)的逻辑,它不会污染您的业务逻辑或模型,因为这些拦截器将处理此任务。
可以找到现有的实现 here。
如果项目对于此类更改来说过于复杂,也许用于转换实体的 ICryptographyService 是更好的解决方案。