Quando os acessos dos usuários devem ser bem variados, qual melhor jeito de fazer?
12/04/2016 20:34
1
?Tenho algumas dúvidas e gostaria de uma colaboração pra entender melhor o gerenciamento de acesso.1) Qual o jeito mais correto de se trabalhar com o Spring Security (2.0) quando determinados usuários (ou grupos de usuários) devem ter certos acessos enquanto outros não podem?
-> Quando a necessidade de acesso é super simples, poderia ser feito com a taglib ifuserislogged para exibir conteúdo e nos controllers com a anotação @SECURED[isFullyAuthenticated]-> Quando começa ficar um pouco mais complexa, também pode ser feito com anotações utilizando a classe Role (relacionada ao usuário) @SECURED["ROLE_ADM","ROLE_TEC"]
2) E quando não se trata apenas de controllers e actions, mas esses usuários/grupos também necessitam ver apenas as entidades que pertence ao seu acesso?E quando essas entidades estão inseridas ou se relacionam com outra propriedade:Usuário 1 pode visualizar os dados dos clientes da empresa 1?Usuário 1 pode visualizar os dados dos clientes da empresa 2?Usuário 1 pode visualizar os dados dos clientes da empresa 3??Usuário 2 pode visualizar os dados dos clientes da empresa 1??Usuário 2 pode visualizar os dados dos clientes da empresa 3
> Criar relacionamento adequado das classes Usuario e Empresa e customizar as actions list() e show() para checar se a empresaInstance pertence a usuarioInstance.listaDeEmpresasRelacionadas e exibir apenas as que estão.
?3) E quando essas entidades estão inseridas ou se relacionam com outra propriedade... quando realmente fica parecida com o mundo real rsrsr[Não sei se é o melhor exemplo para se dar]Usuário 1 pode visualizar os dados dos clientes da empresa 1 ?Usuário 1 pode visualizar os dados dos clientes da empresa 2 que vieram pela internet?Usuário 1 pode visualizar os dados dos clientes da empresa 2 que vieram pela internet ou celular???Usuário 2 pode visualizar os dados dos clientes da empresa 1 que estão inativosUsuário 3 pode visualizar os dados dos clientes da empresa 1 que estão inativos e vieram pela internetUsuário 3 pode visualizar todos os inativos, independente da empresa>Como arquitetar isso e administrar de um modo gerenciavel no futuro, sem envolver uma programação na aplicação das condições?
Tags: Grails, spring-security, usuário, permissão, acesso, dica, melhor jeito


0
Vishe... postou bagunçado
12/04/2016 20:34


1
Oi Rafael,

você deve buscar por uma arquitetura do tipo multi-tenant.

Busque por um plug-in que possuí este nome do Grails. Ele usa os recursos de filtros do Hibernate para obter o resultado que você está mencionando.


0
Obrigado, Henrique. 
Dei uma olhada preliminar e é isso mesmo que preciso aprender.
A noite vou ver mais detalhes pois a busca retornou mais de um plugin... mas o conceito do recurso é exatamente o "multi-tenant"
14/04/2016 16:52


0
Boa tarde,

Consegui plugar o multi-tentant-single-db (https://grails.org/plugin/multi-tenant-single-db) em minha aplicação sem grandes dores de cabeça e achei muito muito muito bom como funciona.

Utilizei o ?comando mt-spring-security para aproveitar minha classe de usuário do Spring Security Core e principalmente para poder ter mais de um usuário compartilhando o mesmo tenantId e consequentemente visualizar os mesmos dados no sistema. Usar esse script e depois configurar os arquivos resource.groovy e Config.groovy também foram suficientes para que após a autenticação todas as consultas fossem interceptadas e filtradas com o tenantId do usuário logado (LINDO!).

Aí vem minha pergunta:
 - Consigo fazer com que mais de um usuário tenha acesso a um "sistema", mas é possível fazer um usuário acessar vários sistemas?

Considerando que ele faça o acesso de um sistema por vez eu pensei em amarrar a Classe Usuário com um mais Sistemas e na autenticação forçar o usuário a escolher qual deles quer acessar fixando a seleção do usuário em seu tentantId.

Mas se eu tiver um usuário que deve monitorar alguns indicadores, por exemplo a quantidade de tarefas pendentes por cada sistema, sendo que o usuário 1 deve acompanhar apenas os sistemas A,B e C enquanto o usuário 2 deve acompanhar as tarefas pendentes dos sistemas C,D,E.

Obrigado
20/04/2016 11:05



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto