Acegi - confirmar senha
08/02/2010 00:00
0
Olá pessoal,

bom, na minha aplicação to precisando confirmar a senha do usuario (ja logado) quando ele quiser executar uma determinada ação, ou seja, ele tenta executar a ação, o sistema pede pra ele informar a senha e, se a senha estiver correta, o sistema permite, caso contrario, o sistema nega. Porém dei uma olhada aqui no forum e na pagina do acegi e nao encontrei algo a respeito de confirmacao de senha. Alguém sabe se é possível fazer isso?
Tags: Grails


0
Olá amigo,

Pelo que ententi da sua dúvida, o que você quer é que o usuário tenha que fornecer a senha para determinadas ações executadas, mesmo que ele esteja autenticado, certo?

O Spring Security (antigo acegi) trabalha com os dois principais princípios da parte de segurança: Autenticação e Autorização. Se você já se autenticou uma vez, não há necessidade de fazê-lo novamente pois o mecanixmo de segurança já sabe que você é você mesmo e isso é autenticação. Autorização parte do princípio que para realizar algum tipo de operação, você deverá ter uma determinada permissão (ou perfil).

O que você precisa fazer é colocar um campo senha no seu formulário e ao postar para o controller, criptografar a senha (SHA, MD5) e comparar com a senha do usuário atual (que pode ser recuperado através do AuthenticateService). Esta é uma solução atípica e como eu lhe falei o usuário já está autenticado e autorizado, mas se ainda sim você precisa confirmar novamente a senha dele, sugiro que faça da forma que lhe expliquei.

Os bancos possuem um mecanismo parecido, só que a senha requisitada normalmente é uma segunda senha a qual possui uma política de segurança maior para ser fornecida.

Espero que tenha ajudado <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->

[]´s
20/02/2010 00:00


0
brucesan,

muito obrigado pela ajuda, vou tentar este caminho. Estava pensando em fazer algo assim mesmo.
Bom, no momento deixei essa parte em standby mas assim que retomar, posto o resultado aqui no forum.

brigadao.
03/03/2010 00:00


0
Bom, finalmente voltei a este problema e resolvi como o brucesan tinha sugerido, mas um pouco diferente.
Na verdade estou acessando o banco para pegar a senha criptografada do usuario, pego a senha que ele digitou na pagina, mando criptografar com o .encodePassword() e comparo as duas:

def usuario = Usuario.findByUsername(authenticateService.principal().username)
if(usuario?.passwd == authenticateService.encodePassword(params.senha)){
// codigo
}
else{
render &quot;Senha inválida!&quot;
}

Muito obrigado pela ajuda e até a próxima!
26/03/2010 00:00



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