Controlar acesso a pagina

Pessoal,

Tenho um aplicação que é acessada através da intranet, que passa para o index da aplicação o usuário válido pelo header. Gravo este usuário na sessão e em todos as outras paginas verifica se o usuário está lá.

O problema é o seguinte, quando o usuário da um logout na intranet a aplicação ainda continua ativa, até aí tudo bem. O que estão querendo é o seguinte, se o usuário deu um logout na intranet e na janela do browser onde a aplicação está aberta ele mudar para outro endereço, “www.uol.com.br” por exemplo, se ele tiver copiado a url ao colar e tentar acessr novamente o sistema ele deveria negar o acesso… como acontece com internet banking.

Obrigado

Olá lap_junior,
tente destruir a sessão no final de cada página e recriá-la, de página a página, utilizando o LOGIN do usuário.

Abraços,

Marcelo Muzilli

Tentei isso mas não funcionou… pq acontece que quando o usuário acessa outro site, ele não executou nenhuma ação na aplicação.

Você tem que colocar no topo da página, antes de qualquer código HTML. Ou seja, verifica se o usuário logado é um usuário válido e destrói a sessão. Vou dar um exemplo do código em PHP, onde o script connect verifica se o usuário na página é válido. O controle de erro é feito neste script. Repare que toda a vez eu destruo a sessão.

Exemplo:

<?php
session_start();
$login = $_SESSION[“login”];
$link = $_SESSION[“link”];

if (trim($link) == “”) {
header(“location:default.php”);
}

include “dbscripts/connect.php”;
include “geralscripts/funcoes.php”;

session_destroy();
?>

<html>
<head>

O problema não é a verificação da sessão diretamente, o problema é saber quando o usuário visitou outro site e retornou. como acontece com internet banking

Certo, você está com uma preocupação que em ambiente web não funciona assim e sim em ambiente C/S.

A pergunta agora é: qual o problema para ele visualizar outra página? Qual será a função do seu sistema?

Temos que lembrar que a SESSION na Web possui também um tempo de inicialização, do qual é destruído após um certo tempo.

Marcelo Muzilli

Simplificando, estou querendo deixar a aplicação com o funcionamento parecido com de um internet banking, onde se vc fizer isso ( testei com o BB ) ele barra.

  • Entre no IB,
  • dê CTRL+N ( duas janelas com IB funcionando )
  • em uma delas acesse outro site
  • Na que ainda esta no IB copie a url e feche
  • cole a url na outra janela e verá que a pagina não abre.

É isso que estão querendo que fique.

Acredito que existirá alguns procedimentos a serem feitos de página a página:

  1. para cada página verifique o login
  2. se for válido, inicia uma sessão e a registre
  3. grave a variáveis de login e senha como globais para serem lidas pela próxima página
  4. destrua a sessão em seguida
  5. inicie para a próxima página a partir do ponto 1.

É uma tentativa!!!

Uma outra possibilidade: quando o usuário se logar, grave no banco de dados a sessão iniciada e não permita mais de uma sessão aberta ao mesmo tempo.
Deixe para isso um script rodando (uma thread) da qual após um certo período deverá liberá-lo, exigindo desta forma que o usuário fique na página do sistema por um certo tempo.
Em IB, você não consegue por exemplo ficar realizando ações no site por mais de 10 minutos. Ele sempre irá exigir que você se logue novamente.
Gravando em banco de dados acredito ser uma forma mais segura do que o controle via browser.

Abraços,

Marcelo Muzilli

Ola…

Tente gravar os atributos de login na “request”.

t+

Olá

Como se faz isto?

[]s
Luca

[quote=“Luca”]Olá

Como se faz isto?

[]s
Luca[/quote]

request.setAttribute()
http://java.sun.com/j2ee/1.4/docs/api/javax/servlet/ServletRequest.html#setAttribute(java.lang.String, java.lang.Object)