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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...