Será que a criptografia de dados pertencem dentro do repositório padrão?
-
03-07-2019 - |
Pergunta
Eu estou usando criptografia de nível de aplicação para proteger dados sensíveis. Eu preciso criptografar o campo antes de armazená-lo no banco de dados físico e eu preciso decifrá-lo antes de mostrá-lo na interface do usuário.
Estou aplicando o padrão Repository na aplicação.
Será que o código de criptografia de dados / decodificação pertencem dentro ou fora da classe Repository?
Meus pensamentos atuais são de que quando os dados está em repouso, a criptografia é um aspecto do repositório e a classe de serviço usando o repositório não deve ser desordenado com este código de criptografia.
A classe de serviço é responsável pela validação e lógica de negócios, mas o algoritmo de criptografia e como os dados são armazenados no resto é com a implementação do repositório.
Essa é uma prática razoável ou estou faltando alguma coisa?
Solução
Você certamente não quer criptografia na classe de serviço.
Em certo sentido, você realmente responder à sua própria pergunta, quando você diz
mas o algoritmo de criptografia e como os dados são armazenados no resto é com a implementação do repositório.
Uma vez que a criptografia é parte de como os dados são armazenados, ele pertence dentro do repositório.
Outras dicas
eu iria colocá-lo na camada de serviço. Eis o porquê:
Olhando de uma perspectiva exigência de regras de negócios / domínio, é criptografar os dados um requisito? Deve ser validados com testes? Se assim for, você deve colocá-lo no mesmo lugar que você colocar toda a sua outra lógica de negócios testável. Em outras palavras, no serviço.
Tanto quanto eu estou em causa, a lógica de negócios (o que criptografar, o que não criptografar) não pertence no repositório. Os objectos a ser mantida deve estar pronto para a persistência (ou o mais perto possível) quando eles são dadas para o repositório. Caso contrário, o repositório é responsável pela persistência e implementação de regras de negócio, e então você está não realmente usando o padrão de repositório mais ...