Impedir um usuário de acessar outro com SpringSecurityCore
01/08/2015 01:13
0
Possuo a seguinte dúvida,
Como faço para impedir que um usuário diferente acesse outro usando o SpringSecuriityCore?

Por exemplo, impedir que um aluno acesse dados do outro aluno. No momento os dois possuem o mesmo papel(role aluno),
e se eu fizer aluno/show/1 eu posso ver e editar os dados.Quero impedir isso!

Consegui fazer com o plugin ACL, usando a tag @PreAuthorize mas ele está deprecated e está dando erro com a versão 2.5.1 do Grails.

Segue como fazia no ACL: Apenas o ADMIN e o aluno logado teriam acesso.
    @PreAuthorize("(hasRole('ROLE_ADMIN')) or (isAuthenticated()) and (principal.id==#alunoInstance.id)")
Tags: SpringSecutiryCore


0
if(springSecurityService.principal.id==alunoInstance.id){
respond alunoInstance  
}else{
[code] ?render(status: 503)

}
[/code]
01/08/2015 11:33


0
Olá João,
  O spring security tem um service que pode te ajudar, ele retorna o "user" logado: springSecurityService.currentUser, o que fazer em seguida depende da sua modelagem. A classe Aluno é a sua classe "userDomainClass" (ou seja, a classe que contém os usuário do seu sistema)? se for, basta vc comparar o id do aluno que está sendo buscado com o id do "currentUser": if(aluno.id == springSecurityService.currentUser.id){ tudo ok}else{ sem permissão }
03/08/2015 08:23



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