Pergunta

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?

Foi útil?

Solução

Eu faria:

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

  • Se a verificação de segurança realmente irá sempre se candidatar, colocá-lo na camada de repositório (ou melhor, em um aspecto, se o seu idioma suporta) para que vários serviços serão todos de segurança ação ordinária 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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top