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?

Foi útil?

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 ...

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top