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() retira todos os privilégios associados à sessão |
.expirationDate : Text a data e hora de expiração do cookie da sessão |
.hasPrivilege( privilege : Text ) : Boolean retorna Verdadeiro se o privilégio estiver associado à sessão, e Falso de outra forma |
.idleTimeout : Integer o tempo limite da sessão de inatividade (em minutos), após o qual a sessão é automaticamente encerrada por 4D |
.isGuest() : Boolean retorna Verdadeiro se a sessão for uma sessão de Convidado (ou seja, não tem privilégios) |
.setPrivileges( privilege : Text ) .setPrivileges( privileges : Collection ) .setPrivileges( settings : Object ) associa o(s) privilégio(s) definido(s) no parâmetro para a sessão |
.storage : Object um objeto partilhado que pode ser utilizado para armazenar informação disponível para todos os pedidos do cliente da web |
.userName : Text o nome de usuário associado à sessão |
Session
Histórico
Release | Mudanças |
---|---|
18 R6 | Adicionado |
Session : 4D. Session
Parâmetro | Tipo | Descrição | |
---|---|---|---|
Resultados | 4D. Session | <- | Objecto Session |
Descrição
O comando Session
devolve o objecto Sessão
correspondente à actual sessão web escalável do utilizador.
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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.clearPrivileges()
| Parâmetro | Tipo | | Descrição | | --------- | ---- |::| -------------------------- | | | | | Não exige nenhum parâmetro |
Descrição
A função .clearPrivileges()
retira todos os privilégios associados à sessão. Como resultado, a sessão torna-se automaticamente uma sessão de convidado.
Exemplo
//Invalidate a session
var $isGuest : Boolean Session.clearPrivileges()
$isGuest:=Session.isGuest() //$isGuest is True
.expirationDate
Histórico
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.expirationDate : Text
Descrição
A propriedade .expirationDate
contém a data e hora de expiração do cookie da sessão. .
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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.hasPrivilege( privilege : Text ) : Boolean
Parâmetro | Tipo | Descrição | |
---|---|---|---|
privilege | Text | <- | Nome do privilegio a verificar |
Resultados | Parâmetros | <- | True se a sessão tiver privilege, False caso contrário |
Descrição
A função .hasPrivilege()
retorna Verdadeiro se o privilégio estiver associado à sessão, e Falso de outra forma.
Exemplo
Se quiser comprovar se o privilégio "WebAdmin" está associado à sessão:
If (Session.hasPrivilege("WebAdmin"))
//Access is granted, do nothing
Else
//Display an authentication page
End if
.idleTimeout
Histórico
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.idleTimeout : Integer
Descrição
A propriedade .idleTimeout
contém o tempo limite da sessão de inatividade (em minutos), após o qual a sessão é automaticamente encerrada 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())
// A Guest session will close after 60 minutes of inactivity
Session.idleTimeout:=60
Else
// Other sessions will close after 120 minutes of inactivity
Session.idleTimeout:=120
End if
.isGuest()
Histórico
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.isGuest() : Boolean
Parâmetro | Tipo | Descrição | |
---|---|---|---|
Resultados | Parâmetros | <- | True se a sessão for uma sessão Guest, False caso contrário |
Descrição
A função .isGuest()
retorna Verdadeiro se a sessão for uma sessão de Convidado (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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.setPrivileges( privilege : Text )
.setPrivileges( privileges : Collection )
.setPrivileges( settings : Object )
Parâmetro | Tipo | Descrição | |
---|---|---|---|
privilege | Text | -> | Nome do privilégio |
privileges | Collection | -> | Collection de nomes de privilégios |
settings | Object | -> | Objetos com as propriedades "privilégios" (string ou collection) |
Descrição
A função .setPrivileges()
associa o(s) privilégio(s) definido(s) no parâmetro para a 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 | Text | Nome de usuário associado à sessão (opcional) |
If the privileges
property contains an invalid privilege name, it is ignored.
In the current implementation, only the "WebAdmin" privilege is available.
By default when no privilege is associated to the session, the session is a 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
... //Authenticate the user If ($userOK) //The user has been approved
var $info : Object
$info:=New object()
$info.privileges:=New collection("WebAdmin")
Session.setPrivileges($info)
End if
.storage
Histórico
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.storage : Object
Descrição
A propriedade .storage
contém um objeto partilhado que pode ser utilizado para armazenar informação disponível para todos os pedidos do cliente da 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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.userName : Text
Descrição
A propriedade .userName
contém o nome de usuá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.