Invocar JavaScript utilizando JSF

10 respostas
R

Olá, galera.

Tenho que criptografar uma senha, no navegador, antes de enviá-la para o servidor e já sei como fazer isso utilizando JavaScript.

O problema é que estou usando PrimeFaces e minha idéia é a seguinte:

Ao clicar no botão LOGAR (<p:CommandButton>), no meu formulário de login, eu quero que seja invocado o JavaScript, a senha seja criptografada e só depois quero que os dados sejam enviados para o ManagedBean.

Isso é possível? Se sim alguém pode me dar um exemplo?

Obrigado!

10 Respostas

felipe_gdr

vc pode usar o método onclick ou onstart:

<p:commandButton onclick=“funcaoJS();” />

R

felipe_gdr:
vc pode usar o método onclick ou onstart:

<p:commandButton onclick=“funcaoJS();” />

É bem simples! Valeu cara!

Mas e pra eu invocar o ManagedBean através do JavaScript?
EX: #{LoginMB.logar}

Você tem idéia de como fazer?

felipe_gdr

Opa, ainda bem que você está usando o Primefaces, pois fica fácil usando o componente .

você faz assim:

<p:commandButton onclick="funcaoJS();" />
<p:remoteCommand name="chamaAction" actionListener="actionNoJava" update="etc..." />

<script>
funcaoJS() {
  fazCoisasJS();

  chamaAction();
}
</script>

No Java:

public void actionNoJava() {
 fazCoisasNoJava
}

mais ou menos assim...

A

Tenha em mente que não é nada seguro criptografar usando javascript (do lado do cliente). Aconselho a fazer isso no servidor mesmo.

felipe_gdr

Fiquei curioso agora, pois realmente, criptografar no javascript significa que qualquer um poderá ver seu método. Porém, se fizer no servidor, no caminho entre browser e servidor a senha fica desprotegida, né?

A

No javascript a pessoa pode ver seu método de criptografia, então decriptar deve ser muito fácil.

R

Mas até que o dado chegue ao servidor, ele fica descriptografado. Então qual seria a solução para isso??

R
felipe_gdr:
Opa, ainda bem que você está usando o Primefaces, pois fica fácil usando o componente .

você faz assim:

<p:commandButton onclick="funcaoJS();" />
<p:remoteCommand name="chamaAction" actionListener="actionNoJava" update="etc..." />

<script>
funcaoJS() {
  fazCoisasJS();

  chamaAction();
}
</script>

No Java:

public void actionNoJava() {
 fazCoisasNoJava
}

mais ou menos assim...

É bem mais simples do que eu imaginava.
Minha última dúvida é como pegar o dado que está em um para manipulá-lo com o javaScript e depos passar esses dados para o Java?

felipe_gdr

dá pra pegar o valor do input usando jquery:

var senhaDesc = $("#id_do_input").val();

var senhaCript = criptografa(senhaDesc);

e depois setar o valor no proprio input, por exemplo:

$("#id_do_input").val(senhaCript);

chamaAction();

Acho que funcionaria...

R
felipe_gdr:
dá pra pegar o valor do input usando jquery:
var senhaDesc = $("#id_do_input").val();

var senhaCript = criptografa(senhaDesc);

e depois setar o valor no proprio input, por exemplo:

$("#id_do_input").val(senhaCript);

chamaAction();

Acho que funcionaria...

Obrigado! Vou testar e qualquer coisa eu posto aqui ;)
Valeu

Criado 1 de março de 2013
Ultima resposta 1 de mar. de 2013
Respostas 10
Participantes 3