log de login no spring security
18/07/2011 20:33
0
Olá pessoal

tenho um método de uma classe que fica em Utils, e se chama

logSistema("usuario logou no sistema" request.usuario)

Não posso utilizar este método dentro do controlador principal do sistema que instância o usuário pois caso a página seja atualizada, varias vezez este método irá registrar a mensagem e o usuário no bd.

Pensei em utilizar dentro do loginCotroller, dentro de def auth, pois sei que esta def authentica o formulário auth.gsp. Ainda não entendo muito bem o funcionamento do spring security

Alguém tem idéia de como fazer?
Tags: ok


0
Algum tempo atrás foi postado um tutorial aqui no Grails Brasil ensinando a fazer isto.
Da uma olhada neste link: http://www.grailsbrasil.com/post/show/237

Vai pelo menos te dar uma luz. Qualquer coisa, tamo ai!


0
Jean, uma dica: quando for postar mensagens no nosso fórum, inclua tags que reflitam o seu conteúdo. Assim fica mais fácil o pessoal encontrar os seus posts ok?


0
olá Henrique, verifiquei o link que vc me passou mas creio que não ha finalidade de instalação do Acegi, pois com o plugin do spring-security-core-1.1.3, já tenho a solução de restrições de url. O que gostaria mesmo é de entender como capturar o usuario que acabou de logar no sistema com este plugin mesmo, o que, como e quando passar para o meu metodo o usuário.. entrando mais no funcionamento da gsp auth e dos controladores que são instalados pelo plugin (loginController e LogoutController) além do filtro que é utilizado. Estou tentando ler o manual do spring, mas achei complexo demais.

Tags: tranquilo::.
19/07/2011 15:02


0
Oi jean, uma alternativa então é você interceptar o login do usuário no controller que executa a autenticação.

Se não me engano, o plugin do Spring Security gera um controlador para a sua aplicação no qual você pode trabalhar. Caso não gere, você pode ver dentro do próprio código fonte do plugin aonde este controlador está. Em seguida, caso não esteja sendo incluido diretamente no seu código, copie-o para o diretório do seu projeto e em seguida o customize incluindo a instrução de login caso este seja bem sucedido.


1
Olá Jean
Não sei se é bem isso que você precisa...

Para exibir o usuário na sua gsp vc pode usar esta tag:

<sec:loggedInUserInfo field="username"/>

ou substituir o "username" por outro campo do seu domain gerado pelo plugin

para recuperar no Controller pode usar assim:
loggedInUserInfo(field:'idPessoa')


0
então lohan, a solução que vc apontou é usada pelo plugin acegi, e novamente entra na questão de eu ter que instalar este plugin que esta descontinuado (veja:http://grails.org/plugin/acegi). Mas sua ideia foi muito legal, vou verificar se é possivel implementar desta mesma forma com o spring security core.
20/07/2011 15:45


0
tente o seguinte:

passe a tag <sec:loggedInUserInfo field="username"/> como value de um campo hidden

aí receba ela no controller normalmente...

String var = params.usuario

normalmente funciona!


0
tai ai a questão, mas como eu vou colocar esta tag como value de um campo hidden se eu nem tenho o username ainda. Dentro do auth.gsp ele só vai validar os dados do usuário, é ai que entra a parte necessaria: capturar o username se foi autenticado corretamente e no mesmo instante gravar de alguma forma no banco o username e mais a data/hora que este usuário criou uma sessão. Ou seja, submeteu o formulario, o controller que valida isso no caso loginController, deve prontamente gravar no bd.
O método da minha classe de utilidades que eu passei ascima para captuarar o username seria muito bom se pulde-se ser usado, pois eu posso inserir mais atributos no dominio e o método gravar tambem, mas se houver outra forma, tambem é valido.
22/07/2011 09:17


0
Jean

Axo que entendi o seu caso. Não fiz nada parecido ainda, mas vamos lá:

O plugin cria uma classe de domínio de usuários, nela você pode mapear uma tabela de usuários do seu Banco, dessa forma vc consegue obter os usernames.


A validação do login (em caso de sucesso) não passa pelo loginController, ela é feita através de um método interno do plugin chamado j_spring_security_check, talvez se encontrar esse método vc consiga o que queira.


0
Lohan, talvez isso mude tudo pois estava focado somente no loginController... sinceramente tinha até dado um tempo nesta questão.

vou voltar a tentar e se tiver sucesso volto a retornar!

27/07/2011 19:30


0
Jean,

O que pode dar certo é você fazer um extends da classe user pra outra classe (pessoa, por exemplo), aí você pode personalizar o controller da classe extendida.



0
Blz galera.. eu sei que esse tópico já foi discutido a muito tempo, mas não quero deixa-lo sem resposta, portanto, só para que vcs saibam, algum tempo depois que eu abri este tópico eu consegui a solução, sendo ela:

para registrar a data de acesso, ultimo acesso, qtd acessos, criei esses campos em SecUser, e quando o usuário acessa o sistema dentro de loginController criei uma closure que grava no banco esses dados e mais o usuário (request.usuario) corrente da minha aplicação.. simples assim!

Acho que muitas pessoas acompanharam este tópico, portanto está ai a solução. vlws!
22/03/2012 19:16



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