Controle de Acesso

11 respostas
alves.Felipe

Boa Tarde galera,

Estou usando SpringSecurity para autenticação e autorização.
Tenho vários papeis (Admin, gestor,usuario, ect), mas para cada papel tenho uma lista de acessos…certo!?
gostaria de saber como posso controlar esses acessos?
Eu estava dando uma olhada no ACL,será que essa é a melhor forma?

obg
Felipe

11 Respostas

aprendizweb

E ai Blz!!!

Cara eu fiz um controle de acesso de usuários com Spring Security em um sistema Web, é o seu caso?

alves.Felipe

então cara…estou usando SpringSecurity…
mas eu tenho um papel e pra esse papel eu defino vários acessos, por ex.:

ROLE_ADMIN: Cadastrar usuário
Cadastrar Funcionário
Cadastrar Fornecedor

ROLE_USUARIO: Consultar Fornecedor
Consultar Funcionário
eu preciso de alguma forma conseguir verificar os acessos do usuário logado… entende?

FernandoFranzini

Melhor forma de que?

alves.Felipe

de verificar os acessos que cada perfil possui e autororizar a operação que o usuário quer fazer.

Quindin

Acho que você pode criar roles de crud para o seu caso

ROLE_CONSULTAR_CLIENTE -> Pode entrar na tela e pesquisar cliente
ROLE_CADASTRAR_CLIENTE -> Pode entrar na tela e pesquisar cliente e cadastrar cliente
ROLE_EDITAR_CLIENTE -> Pode entrar na tela e pesquisar cliente e editar cliente
ROLE_EXCLUIR_CLIENTE -> Pode entrar na tela e pesquisar cliente e excluir cliente

e na sua pagina vc usaria algo parecido com o de baixo para liberar ou não o link de CLIENTE

<sec:authorize ifAnyGranted="ROLE_CONSULTAR_CLIENTE"> <a href="#">Cliente</a> </sec:authorize>

FernandoFranzini

kkkkk
Mas vc ta questionando o paradigma de autenticação e autorização ou o framework spring security que implementa o paradigma de permissão por ROLE?

alves.Felipe

e se numa mesma tela (.xhtml), admin e usuário podem acessar, mas existem operações que só quem for admin pode fazer?
não vai adiantar eu controlar por página.
e mesmo usando esse ifAnyGranted, acho que não iria ficar pratico… eu teria que ter varios disso no sistema inteiro…

aprendizweb

Tem um tópico em discursão do Spring Security aqui: http://www.guj.com.br/java/282198-duvida-sobre-spring-security#1489074

Não é necessário usar o a tag ifAnyGranted no sistema todo, usa somente nas opções de submenu.

Quindin

alves.Felipe:
e se numa mesma tela (.xhtml), admin e usuário podem acessar, mas existem operações que só quem for admin pode fazer?
não vai adiantar eu controlar por página.
e mesmo usando esse ifAnyGranted, acho que não iria ficar pratico… eu teria que ter varios disso no sistema inteiro…

Você pode colocar

<sec:authorize ifAnyGranted="ROLE_CONSULTAR_CLIENTE, ROLE_ADMIN, ROLE_ALGUMA_COISA, ROLE_SHIT"> <a href="#">Cliente</a> </sec:authorize>

Olhe as doc do springsecurity e você inumeros methods do sec:authorize que vão lhe servir…

Ai você quer moleza de mais :stuck_out_tongue:
QUer deixar o sistema seguro e sem furos… vai ter um trabalhinho xD

alves.Felipe

kkkkk
Mas vc ta questionando o paradigma de autenticação e autorização ou o framework spring security que implementa o paradigma de permissão por ROLE?
rs… na verdade quero uma sugestão da melhor forma de controlar os acessos, podendo ser com spring security ou não…
tipo eu já uso o spring security para controlar por ROLE , mas eu tive que fazer uma mudança no banco e ficou como no anexo.
Antes eu não tinha a tabela acesso…


FernandoFranzini

rs… na verdade quero uma sugestão da melhor forma de controlar os acessos, podendo ser com spring security ou não…

Segue outras sugestões de implementações - http://fernandofranzini.wordpress.com/2009/09/09/autenticacao-e-autorizacao/

tipo eu já uso o spring security para controlar por ROLE , mas eu tive que fazer uma mudança no banco e ficou como no anexo.
Antes eu não tinha a tabela acesso…

Agora na sua modelagem não tem como eu opinar pq desconheço o cenário…

Criado 12 de setembro de 2012
Ultima resposta 13 de set. de 2012
Respostas 11
Participantes 4