Session
Os objetos Session são devolvidos pelo comando Session
quando são habilitadas as sessões escaláveis em seu projeto. O objeto Session é criado e mantido automaticamente pelo servidor web 4D para controlar a sessão de um cliente web (por exemplo, um navegador). Esse objeto oferece ao desenvolvedor web uma interface para a sessão de usuário, permitindo gerenciar privilégios, armazenar dados contextuais, partilhar informação entre processos e lançar processos preemptivos relacionados a sessão.
Para obter informação detalhada sobre a implementação da sessão, consulte Sessões do servidor web.
Resumo
.clearPrivileges()
|
.expirationDate : Text
|
.hasPrivilege( privilege : Text ) : Boolean devolve True se o privilegio estiver associado à sessão, ou então False em caso contrário |
.idleTimeout : Integer
|
.isGuest() : Boolean
|
.setPrivileges( privilege : Text ) .setPrivileges( privileges : Collection ) .setPrivileges( settings : Object )
|
.storage : Object
|
.userName : Text
|
Session
Histórico
Versão | Mudanças |
---|---|
v18 R6 | Adicionado |
Session : 4D.Session
Parâmetros | Tipo | Descrição | |
---|---|---|---|
Resultados | 4D. Session | <- | Session object |
Descrição
O comando Session
devolve o objeto Session
correspondente à sessão web atual do usuário escalável.
Este comando só funciona quando estão ativadas as sessões escaláveis. Devolve Null quando as sessões estiverem desabilitadas ou quando utilizar sessões herdadas.
Quando se habilitam as sessões escaláveis, o objeto Sessão
está disponível desde qualquer processo web nos seguintes contextos:
On Web Authentication
,On Web Connection
, e métodos databaseOn REST Authentication
,- As funções Data Model Class ORDA chamadas pelas petições REST,
- código processado a través das etiquetas 4D nas páginas semidinâmicas (4DTEXT, 4DHTML, 4DEVAL, 4DSCRIPT/, 4DCODE)
- os métodos projeto com o atributo "Available through 4D tags and URLs (4DACTION...)" e chamados através de 4DACTION/ urls.
Exemplo
Se definiu o método action_Session
com o atributo "Available through 4D tags and URLs". Pode chamar ao método introduzindo a URL abaixo no navegador:
IP:port/4DACTION/action_Session
//método action_Session
Case of
:(Session#Null)
If(Session.hasPrivilege("WebAdmin")) //chamada da função hasPrivilege
WEB SEND TEXT("4DACTION --> Session is WebAdmin")
Else
WEB SEND TEXT("4DACTION --> Session is not WebAdmin")
End if
Else
WEB SEND TEXT("4DACTION --> Sesion is null")
End case
.clearPrivileges()
Histórico
Versão | Mudanças |
---|---|
v18 R6 | Adicionado |
.clearPrivileges() | Parâmetros | Tipo | | Descrição | | ---------- | ---- |::| -------------------------- | | | | | Não exige nenhum parâmetro |
Descrição
A função .hasPrivilege()
devolve True se o privilegio estiver associado à sessão, ou então False em caso contrário.
Exemplo
//Invalidar uma sessão
var $isGuest : Boolean
Session.clearPrivileges()
$isGuest:=Session.isGuest() //$isGuest es True
.expirationDate
Histórico
Versão | Mudanças |
---|---|
v18 R6 | Adicionado |
.expirationDate : Text
Descrição
A propriedade .expirationDate
contéma data e hora de expiração da cookie de sessão. O valor se expressa como texto no formato ISO 8601: YYYY-MM-DDTHH:MM:SS.mmmZ
.
Essa propriedade éapenas leitura. É recalculada automaticamente se modificar o valor da propriedade .idleTimeout
.
Exemplo
var $expiration : Text
$expiration:=Session.expirationDate //por exemplo "2021-11-05T17:10:42Z"
.hasPrivilege()
Histórico
Versão | Mudanças |
---|---|
v18 R6 | Adicionado |
.hasPrivilege( privilege : Text ) : Boolean
Parâmetros | Tipo | Descrição | |
---|---|---|---|
privilege | Texto | <- | Nome do privilegio a verificar |
Resultados | Booleano | <- | True se a sessão tiver privilege, False caso contrário |
Descrição
A função .hasPrivilege()
devolve True se o privilegio estiver associado à sessão, ou então False em caso contrário.
Exemplo
Se quiser comprovar se o privilégio "WebAdmin" está associado à sessão:
If (Session.hasPrivilege("WebAdmin"))
//O acesso está concedido, não faça nada
Else
//Mostrar uma página de autenticação
End if
.idleTimeout
Histórico
Versão | Mudanças |
---|---|
v18 R6 | Adicionado |
.idleTimeout : Integer
Descrição
A propriedade .idleTimeout
contieneo tempo de inatividade da sessão (em minutos), depois da qual a sessão é fechada automaticamente por 4D.
Se não se definir esta propriedade, o valor padrão é 60 (1h).
Quando se definir esta propriedade, a propriedade .expirationDate
é atualizada em consequência.
O valor não pode ser inferior a 60: se definir um valor inferior, o tempo de espera se eleva até 60.
Essa propriedade éapenas escrita.
Exemplo
If (Session.isGuest())
// Uma sessão de convidado se fechará depois de 60 minutos de inatividade
Session.idleTimeout:=60
Else
// As outras sessões se fecharão depois de 120 minutos de inatividade
Session.idleTimeout:=120
End if
.isGuest()
Histórico
Versão | Mudanças |
---|---|
v18 R6 | Adicionado |
.isGuest() : Boolean
Parâmetros | Tipo | Descrição | |
---|---|---|---|
Resultados | Booleano | <- | True se a sessão for uma sessão Guest, False caso contrário |
Descrição
A função .isGuest()
devolve True se a sessão for uma sessão Guest (ou seja, não tem privilégios).
Exemplo
No método base On Web Connection
:
If (Session.isGuest())
//Fazer algo para o usuário convidado
End if
.setPrivileges()
Histórico
Versão | Mudanças |
---|---|
v18 R6 | Adicionado |
.setPrivileges( privilege : Text )
.setPrivileges( privileges : Collection )
.setPrivileges( settings : Object )
Parâmetros | Tipo | Descrição | |
---|---|---|---|
privilege | Texto | -> | Nome do privilégio |
privileges | Collection | -> | Collection de nomes de privilégios |
settings | Objeto | -> | Objetos com as propriedades "privilégios" (string ou collection) |
Descrição
A função .setPrivileges()
associa os privilégios definidos no parâmetro à sessão.
No parâmetro privilege, passe uma string contendo um nome de privilégio (ou vários nomes de privilégio separados por vígulas).
No parâmetro privileges, passe uma coleção de strings contendo nomes de privilégios.
No parâmetro settings, passe um objeto contendo as propriedades abaixo:
Propriedade | Tipo | Descrição |
---|---|---|
privileges | Text ou Collection | |
userName | Texto | Nome de usuário associado à sessão (opcional) |
Se a propriedade privileges
conter um nome de privilégio inválido, é ignorado.
Na implementação atual, só o privilégio "WebAdmin" está disponível.
Como padrão quando não houver um privilégio associado à sessão, a sessão é Guest session.
A propriedade userName
está disponível no nível do objeto da sessão (apenas leitura).
Exemplo
Em um método de autenticação personalizado, deve estabecer o privilégio "WebAdmin" ao usuário:
var $userOK : Boolean
... //Autenticar o usuário
If ($userOK) //O usuário foi aprovado
var $info : Object
$info:=New object()
$info.privileges:=New collection("WebAdmin")
Session.setPrivileges($info)
End if
.storage
Histórico
Versão | Mudanças |
---|---|
v18 R6 | Adicionado |
.storage : Object
Descrição
A propriedade .storage
contémum objeto partilhado que pode ser usado para armazenar informação disponível a todas as petições do cliente web.
Quando um objeto Session
for criado, a propriedade .storage
é vazia. Já que é um objeto partilhado, essa propriedade estará disponível no objeto Storage
do servidor.
Da mesma forma que o objeto
Storage
do servidor, a propriedade.storage
sempre será "single": adicionar um objeto partilhado ou uma collection partilhada a.storage
não cria um grupo partilhado.
Esas propriedade é read only mas retorna um objeto read-write.
Exemplo
Se quiser armazenar a IP do cliente na propriedade .storage
. Pode escrever no método de banco de dados On Web Authentication
:
If (Session.storage.clientIP=Null) //first access
Use (Session.storage)
Session.storage.clientIP:=New shared object("value"; $clientIP)
End use
End if
.userName
Histórico
Versão | Mudanças |
---|---|
v18 R6 | Adicionado |
.userName : Text
Descrição
A propriedade .userName
contémo nome de usuuário associado à sessão. Pode usá-la para identificar o usuário dentro de seu código.
Essa propriedade é uma string vazia como padrão. Pode ser estabelecida usando a propriedade privileges
da função setPrivileges()
.
Essa propriedade éapenas leitura.