Popup + segurança declarativa

8 respostas
D

Eu utilizo segurança declarativa em aplicação web e estou com o seguinte problema: se eu abrir uma tela que tem um botão de pop-up e esperar a sessão expirar vai abrir a tela de login no popup. Pensei em resolver com um servlet ou action que checaria se o login ainda está ativo, caso contrário fecharia a tela e abriria a página de login. Alguém já fez isso? Sabe se funciona? Tem sugestão melhor?

8 Respostas

M

Salve,

bem para você checar se o usuário ainda está ativo utilize a expressão:

request.getUserPrincipal() == null

bem eu não sei seu eu entendi, o que você quer é que quando passar o tempo da sessão redirecionar para a página de login?? é isto?

D

“marcossousa”:

bem eu não sei seu eu entendi, o que você quer é que quando passar o tempo da sessão redirecionar para a página de login?? é isto?

Mais ou menos. Ele já redireciona normalmente. O que eu quero é evitar que a página de login abra em um pop-up. Por isso pensei em usar um redirecionador para interceptar a chamada aos pop-ups.

Me pergunto agora se usar um filtro seria uma boa alternativa…

M

Bem,

porque você não usa páginas customizadas de login???

<login-config> <auth-method>FORM</auth-method> <form-login-config> <form-error-page>/jsp/LoginInvalido.jsp</form-error-page> <form-login-page>/jsp/Login.jsp</form-login-page> </form-login-config> </login-config>

-> código para página de login.

<form name="form" method="post" action="j_security_check" onsubmit='return validCpm([j_username, j_password ],[ "nome", "senha" ])'> E-mail:<input name="j_username" type="text" class="botao" id="j_username" size="40"> <br> Senha: <input name="j_password" type="password" class="botao" id="j_password" size="15" maxlength="8"> <input name="cadastrar" type="submit" class="botao" id="cadastrar" value="Entrar">

… bem não sei se é isso que você está realmente querendo.

:okok:

D

Não… Veja bem, eu já tenho uma página de login que funciona normalmente.

O problema ocorre quando estou em em uma página que tem um botão que abre pop-up. Se a sessão expirar e eu clicar no botão, ele vai abrir o pop-up e tentar acessar a página. Como a sessão expirou ele vai abrir a página de login só que dentro do pop-up, o que é feio pra caramba.

O que eu quero é evitar que o pop-up abra se a sessão expirar. Ele deve mostrar a página de login, mas não no pop-up.

M

hummm… bem agora sim eu entendi… se for apenas uma página você pode por algo do tipo:

<c:if test='${empty userPrincipal}> //crie uma tag de script window.close(); </c:if>

bem é um pouco tosco mas resolve.

Obs.: você terá que importar a biblioteca core das JSTL ok?!

:okok:

D

Isso não funcio porque ele não chega nem a enviar a requisição ao servidor web. A segurança roda antes disso. Tentei inclusive utilizar um filtro para interceptar a requisição antes de chegar na página mas ainda assim a segurança não me deixou chegar no filtro.

Resolvi o problema liberando o acesso aos pop-ups. Obviamente essa abordagem não funcionaria em casos onde os pop-ups contivessem informações/funcionalidades críticas. Como não é o caso deixarei assim.

M

Salve,

Caraca… nem tinha pensado nisto… bem porque você não passa para uma página tosca que não seja de acesso restrito, aí nela você testa de a sessão está ativa se tiver você passa para a página restrita, caso contrário manda uma mensagem para o usuário.

Tentei fazer um filtro aqui mas dá o mesmo problema!

:okok:

D

Essa sua abordagem realmente é mais interessante. Vou tentar algo desse tipo depois mas como o projeto está pra ser entregue não posso voltar pra modificar isso em todos os pop-ups.

.Java

Criado 2 de julho de 2005
Ultima resposta 8 de jul. de 2005
Respostas 8
Participantes 2