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.
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:
C_TEXT(www_SessionID)
If(www_SessionID=WEB Get Current Session ID)
...
Else
www_SessionID:=WEB Get Current Session ID
QUERY([Usuario];[Usuario]Login=www_Login)
QUERY([prefs];[prefs]Login=www_Login)
QUERY([empregados];[empregados]Nombre=[usuario]nome)
QUERY([empresa];[empresa]Nome=[usuario]empresa)
SELECTION TO ARRAY([prefs]nombre;prefNames;[prefs]valores;prefValues)
www_UserName:=[User]Name
www_UserMail:=[User]mail
End if
Código de Método de banco de dados On Web Legacy Close Session:
C_TEXT(www_SessionID)
www_SessionID:=""
QUERY([prefs];[prefs]Login=www_Login)
ARRAY TO SELECTION(prefNames;[prefs]nombre;prefValues;[prefs]valores)
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.