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
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.
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 "Senha inválida!"
}
Muito obrigado pela ajuda e até a próxima!