数据加密是否属于存储库模式?

时间:2009-03-05 20:09:59

标签: encryption repository-pattern

我正在使用应用程序级加密来保护敏感数据。在将字段存储到物理数据库之前,我需要对字段进行加密,在将其显示在用户界面上之前我需要对其进行解密。

我正在应用程序中应用Repository模式。

数据加密/解密代码是属于Repository类的内部还是外部?

我目前的想法是,当数据处于静止状态时,加密是存储库的一个方面,使用存储库的服务类不应该使用此加密代码混乱。

服务类负责验证和业务逻辑,但加密算法以及数据在静态存储的方式取决于存储库实现。

这是一种合理的做法,还是我错过了什么?

2 个答案:

答案 0 :(得分:4)

您当然不希望在服务类中加密。

从某种意义上说,当你说

时,你实际上回答了自己的问题
  

但加密算法以及数据如何在静止时存储取决于存储库实现。

由于加密是数据存储方式的一部分,因此它属于存储库。

答案 1 :(得分:1)

我会把它放在服务层。原因如下:

从业务规则/域要求的角度来看,是否需要加密数据?它应该通过测试验证吗?如果是这样,您应该将它放在放置所有其他可测试业务逻辑的相同位置。换句话说,在服务中。

就我而言,业务逻辑(加密内容,不加密内容)不属于存储库。当它们被提供给存储库时,要保持的对象应该准备好持久化(或尽可能接近)。否则,存储库负责实现业务规则的持久性,然后您不再真正使用存储库模式......