Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v19.8
Web Sessions Management (Legacy)

Web Sessions Management (Legacy)  


 

Esta página descreve as sessõe web herdadas que estão disponíveis em bancos de dados 4D convertidos (ver Legacy sessions (sessões de processo único)).

A partir de 4D v18 R6, se recomenda utilizar a implementação de sessões web escalonáveis. Pode habilitar sessões escalonáveis em suas aplicações convertidas selecionando a opção apropriada na configuração da aplicação, a função  webServer.start( ) ou através do comando WEB SET OPTION.

Pode encontrar documentação exaustiva sobre as sessões web escalonáveis em Sessões de usuário em developer.4d.com.

 Legacy sessions (sessões de processo único)).

O servidor web de 4D oferece um mecanismo simples e completo de gestão de sessões usuário. Este mecanismo automático permite aos clientes web reutilizar o mesmo contexto (seleções e instâncias de variáveis) de uma petição a outra.

Isso é feito através de um cookie privado criado por 4D: "4DSID". Em cada petição cliente web, 4D verifica a presença e o valor do cookie 4DSID:

  • Se o cookie tiver um valor, 4D tenta encontrar o contexto que criou o cookie entre os contextos existentes,
    • Se o contexto for encontrado, se reutiliza para chamada, o método Compiler_Web não se executa,
    • Se não encontrar contexto,  4D cria um novo,
  • Se o cookie não tiver um valor ou se não for apresentado (por vencimento, por exemplo) , 4D cria um novo contexto.

As sessões web herdadas são habilitadas em bancos de dados convertidos usando um dos meios abaixos:

  • a opção Sessões herdadas é selecionada na página "Opções (I)" da Configuração da estrutura (configuração permanente):

     

  • a instrução WEB SET OPTION (Web legacy session;1) se executa.

É recomendado ativar as sessões escalonáveis logo que possível.

A vida útil de um cookie inativo é de 8 horas (480 minutos) como padrão, isso pode ser mudado com o comando WEB SET OPTION. Pode estabelecer um tempo de vida diferente para os cookies (opção Web Inactive session timeout) e para os processos associados as sessões no servidor (opção Web Inactive process timeout): por exemplo, é possível que queira que um "carrinho de compras" permaneça válido durante 24 horas mas, por razões de otimização, não quiser manter o processo durante tanto tempo. Nesse caso,  pode ser estabelecido uma duração de vida do processo de 4 horas, por exemplo. Ao final desse período se chama Método de banco de dados On Web Legacy Close Session e podem ser armazenadas as variáveis e as seleções relacionadas com a sessão antes de matar o processo. A próxima vez que se conecte o cliente web (até 24 horas depois) o cookie é enviado de volta ao servidor e pode carregar a infromação da sessão em  QR SET DESTINATION (ver o exemplo abaixo).

Se for necessário, pode usar o comando WEB LEGACY CLOSE SESSION para forçar a expiração do cookie, em qualquer momento e portanto fechar a sessão.

4D destrói automaticamente os contextos inativos mais antigos quando alcançar o número máximo de contextos salvos (este número é de 100 por padrão e pode mudar com o comando WEB SET OPTION).
Quando o contexto estiver a ponto de ser destruido (fechar o processo  proceso web associado), se chama ao Método de banco de dados On Web Legacy Close Session, que lhe permite guardar as seleções e as variáveis do contexto, à espera de sua utilização posterior. 

Exemplo  

Este ejemplo mostra como é fácil que administrar sessões utilizando  QR SET DESTINATION e Método de banco de dados On Web Legacy Close Session

Este é o código de QR SET DESTINATION:

  // On Web Connection (ou On Web Authentication)
 C_TEXT(www_SessionID)
 If(www_SessionID=WEB Get Current Session ID)
  // Compiler_Web não é chamado
  // Todas as variáveis e as seleções já existentens
    ...
 Else
  // Compiler_Web acaba de executar.
  // Esta é uma nova sessão, nenhuma varável ou seleção existe
  // Registre a ID da nova sessão
    www_SessionID:=WEB Get Current Session ID
 
  // Inicialização da sessão
  // Definção das seleções
  // Recuperação do usuário selecionado
    QUERY([Usuario];[Usuario]Login=www_Login)
    QUERY([prefs];[prefs]Login=www_Login)
 
  // Coordenadas de empregado
    QUERY([empregados];[empregados]Nombre=[usuario]nome)
    QUERY([empresa];[empresa]Nome=[usuario]empresa)
 
  // Definição das variáveis
  // Leitura das preferências para este usuário
    SELECTION TO ARRAY([prefs]nombre;prefNames;[prefs]valores;prefValues)
    www_UserName:=[User]Name
    www_UserMail:=[User]mail
 
  // Sessão inicializada
 End if

Código de Método de banco de dados On Web Legacy Close Session:

  // On Web Session Suspend
  // Depois de um periodo de inatividade ou em caso de ser necessário, 4D fecha a sessão
 C_TEXT(www_SessionID)
 www_SessionID:=""
  // Salva a informação da sessão
  // Guardamos as preferências de usuário conectado previamente
 QUERY([prefs];[prefs]Login=www_Login) // conservado na sessão
 ARRAY TO SELECTION(prefNames;[prefs]nombre;prefValues;[prefs]valores)
 
  // Importante: se mata o processo
  // 4D apaga as variáveis, sessões,  etc.

Como  o mecanismo de gestão de sessões está baseado na utilização de cookies, o servidor HTTP de 4D não pode manter uma sessão se o cliente web não aceitar os cookies. Neste caso, cada petição é tratada como uma nova conexão e o método Compiler_Web se executa em cada conexão.

Pode verificar se a compatibilidade para cookies com o comando WEB GET HTTP HEADER.

O servidor HTTP de 4D registra o IP que inicia uma sessão. Se um cliente web em um endereço IP diferentetentar acessar a uma sessão existente, se devolve o erro HTTP 400 ao cliente.



Ver também 

_O_WEB Get session process count
Método banco de dados On Web Legacy Close Session database method
Método de banco de dados On Web Legacy Close Session
WEB Get Current Session ID
WEB LEGACY CLOSE SESSION
WEB LEGACY GET SESSION EXPIRATION

 
PROPRIEDADES 

Produto: 4D
Tema: Web Server

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

Modificado: 4D v18 R6

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v19)
Manual de linguagem 4D ( 4D v19.1)
Manual de linguagem 4D ( 4D v19.4)
Manual de linguagem 4D ( 4D v19.5)
Manual de linguagem 4D ( 4D v19.6)
Manual de linguagem 4D ( 4D v19.7)
Manual de linguagem 4D ( 4D v19.8)