Pattern Repository e camadas. Onde posso aplicar segurança?

votos
10

Eu estou fazendo o meu melhor para projetar meu aplicativo web com uma boa separação entre as camadas. Eu estou usando o padrão de repositório e, como tal, têm um SQLObjectRepository que se chama pelo meu ObjectService que se chama pelo meu front-end da Web.

No meu modelo de objeto, o usuário é associado a uma ou mais regiões que devem filtrar os objetos que eles devem ter acesso. A minha pergunta é, quando eu estou consultando para objetos, posso colocar o código no serviço para definir as permissões sobre os objetos, ou que deveria código estar no repositório? Se o usuário é um membro de 2 regiões, eu deveria passar o usuário como um parâmetro para o serviço, ou devo passar regiões do usuário para o serviço?

Publicado 09/12/2008 em 19:49
fonte usuário
Em outras línguas...                            


1 respostas

votos
3

Eu iria:

  • Escrever a verificação de segurança de tal forma que ele pode ser aplicado em qualquer lugar que você gosta. Desta forma, você pode refatorar como os requisitos mudam.

  • Se a verificação de segurança realmente vai sempre aplicar, coloque-o na camada de repositório (ou melhor, em um aspecto, se o idioma suporta) para que vários serviços serão todos de segurança comum compartilhar Se eles usam o mesmo repositório. Caso contrário, coloque-o no serviço (ou um aspecto agindo sobre o serviço).

  • passar todo o objeto de usuário para o mecanismo de verificação de segurança:

    • Se a verificação de segurança mais tarde torna-se mais complexa (depende de outras propriedades do usuário) da API não vai mudar;
    • faz sentido mais semântico - você está verificando o usuário tem permissão para fazer algo, não que a lista de países faz.
Respondeu 09/12/2008 em 22:56
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more