Jump to content

Encerramento de sessão


Kalvaitir

Recommended Posts

  • 3 weeks later...

Olá,

 

  Este é o comportamento padrão para aplicações WEB.

 

  Qualquer aplicação WEB possui este comportamento, eu tenho experiência em desenvolvimento Java J2EE e o comportamento para as sessões é este mesmo.

  Você define o timeout da sessão e quando o usuário deixa de utilizar a aplicação, fecha o navegador, fecha a aba da aplicação ou fica parado em uma mesma página até o timeout ser atingido, quando o timeout é atingido a sessão é excluída.

 

  Isso não é um problema, é uma característica das aplicações WEB.

 

  O tempo ideal do timeout da sessão depende muito das características da  sua aplicação.

 

  Por exemplo eu tenho uma aplicação de consulta onde os usuários entram fazem consultas e vão embora, neste caso eu defini o timeout em 5 minutos, porque eu sei q a aplicação é apenas para consulta e ninguém tem q ficar muito tempo realizando atividades demoradas. 

 

  Por outro lado eu tenho outra aplicação onde os usuários utilizam a aplicação o dia todo, neste caso eu fiz com que o timeout nunca seja atingido e assim a sessão nunca termina, vc pode me perguntar, mas se um usuário entrar 10 vezes terá 10 sessões, sim, para resolver isso existe uma configuração no uniGUI esta em: 

 

  ServerModule->ServerLimits->SessionRestrict

 

  Na propriedade SessionRestrict ela pode assumir os seguintes valores:

  -SrNone          -> Sem restrição, comportamento padrão.

  -SrOnePerIP   -> Sua aplicação aceitará apenas uma sessão por número IP. (isso pode ser um problema pois se vc estiver atrás de um firewall todas sessões terão o mesmo IP).

  -SrOnePerPC -> Sua aplicação aceitará apenas uma sessão por Computador, caso o usuário feche o navegador a sessão dele fica ativa, quando ele retornar o UnigGUI vai saber q tem uma sessão abandonada e vai excluir a sessão anterior e criar uma nova, com isso sua aplicação não vai explodir por causa das sessões.

 

  O Unigui é muito flexível e vc também pode programar outra forma de comportamento para as sessões, na unit ServerModule tem o seguinte evento que vc pode programar.

 
procedure TUniMainModule.UniGUIMainModuleSessionTimeout(ASession: TObject;
  var ExtendTimeOut: Integer);
begin
  if not AllowTerminate then
  begin
    ExtendTimeOut := 900000;
    AllowTerminate := True;
  end;
end;

 

 

Att,

 

Luiz

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...